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

@Entity("taller_sync_events")
export class SyncEvent {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: "event_id", length: 36, unique: true })
  @Index()
  eventId: string; // UUID del cliente

  @Column({ name: "event_type", length: 50 })
  eventType: string; // CREATE_OT, UPDATE_OT, etc.

  @Column({ name: "entity_type", length: 50 })
  entityType: string; // ot, cliente, cotizacion

  @Column({ name: "local_id", length: 36 })
  localId: string;

  @Column({ name: "server_id", nullable: true })
  serverId: number;

  @Column({ type: "json" })
  payload: any;

  @Column({ name: "user_id", nullable: true })
  userId: number;

  @Column({ name: "device_id", length: 100, nullable: true })
  deviceId: string;

  @Column({ type: "bigint" })
  @Index()
  timestamp: number;

  @Column({ default: false })
  @Index()
  processed: boolean;

  @Column({ name: "processed_at", type: "datetime", nullable: true })
  processedAt: Date;

  @Column({ type: "text", nullable: true })
  error: string;

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