import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import { User } from '../users/user.entity';

@Entity({ name: 'audit_logs' })
export class AuditLog {
  @PrimaryGeneratedColumn({ type: 'bigint' })
  id!: number;

  @Column({ type: 'bigint', name: 'user_id', nullable: true })
  userId?: number;

  @ManyToOne(() => User, { onDelete: 'SET NULL', nullable: true })
  @JoinColumn({ name: 'user_id' })
  user?: User;

  @Column({ type: 'varchar', length: 128 })
  action!: string;

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

  @Column({ type: 'bigint', nullable: true })
  entityId?: number;

  @Column({ type: 'json', nullable: true })
  oldValue?: Record<string, any>;

  @Column({ type: 'json', nullable: true })
  newValue?: Record<string, any>;

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

  @CreateDateColumn({ name: 'created_at' })
  createdAt!: Date;
}
