Spaces:
Sleeping
Sleeping
File size: 1,517 Bytes
e67d35c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | import {
Entity,
PrimaryGeneratedColumn,
Column,
ManyToOne,
JoinColumn,
CreateDateColumn,
} from 'typeorm';
import { User } from '../../auth/entities/user.entity';
export enum ActivityType {
LOGIN = 'login',
LOGOUT = 'logout',
VIEW = 'view',
SUBMIT = 'submit',
DOWNLOAD = 'download',
UPLOAD = 'upload',
CHAT = 'chat',
QUIZ = 'quiz',
OTHER = 'other',
}
@Entity('activity_logs')
export class ActivityLog {
@PrimaryGeneratedColumn({
name: 'log_id',
type: 'bigint',
unsigned: true,
})
logId: number;
@Column({ name: 'user_id', type: 'bigint', unsigned: true })
userId: number;
@Column({ name: 'activity_type', type: 'enum', enum: ActivityType })
activityType: ActivityType;
@Column({
name: 'entity_type',
type: 'varchar',
length: 50,
nullable: true,
})
entityType: string;
@Column({
name: 'entity_id',
type: 'bigint',
unsigned: true,
nullable: true,
})
entityId: number;
@Column({ name: 'description', type: 'text', nullable: true })
description: string;
@Column({ name: 'ip_address', type: 'varchar', length: 45, nullable: true })
ipAddress: string;
@Column({ name: 'user_agent', type: 'text', nullable: true })
userAgent: string;
@Column({
name: 'session_duration_minutes',
type: 'int',
nullable: true,
})
sessionDurationMinutes: number;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@ManyToOne(() => User)
@JoinColumn({ name: 'user_id' })
user: User;
}
|