import {
  Column,
  CreateDateColumn,
  Entity,
  Index,
  PrimaryGeneratedColumn,
} from 'typeorm';

@Entity({ name: 'activity_logs' })
export class ActivityLog {
  @PrimaryGeneratedColumn('uuid')
  id!: string;

  @Index()
  @Column({ type: 'varchar', length: 36, nullable: true })
  userId?: string;

  @Column({ type: 'varchar', length: 250, nullable: true })
  userName?: string;

  /** create | update | delete | login | logout | view | export */
  @Column({ type: 'varchar', length: 60 })
  action!: string;

  /** Module name e.g. member | loan | savings | application */
  @Column({ type: 'varchar', length: 60 })
  module!: string;

  @Index()
  @Column({ type: 'varchar', length: 36, nullable: true })
  recordId?: string;

  @Column({ type: 'text', nullable: true })
  message?: string;

  /** JSON string of changed data */
  @Column({ type: 'text', nullable: true })
  oldData?: string;

  @Column({ type: 'text', nullable: true })
  newData?: string;

  @Column({ type: 'varchar', length: 60, nullable: true })
  ipAddress?: string;

  @CreateDateColumn()
  createdAt!: Date;
}
