import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from "typeorm";
import { AmbitoParametro } from "./taller-parametro.entity";

// Denormalizada a proposito (clave/ambito/tienda/destino en la fila, no una
// FK a taller_parametros.id) para que el historial siga siendo legible
// aunque la fila de configuracion se reescriba. auditoria.entity.ts no
// encaja aca: exige identidad_id (identidad de plataforma) y vive en la
// base de control -- quien cambia un parametro del taller es un Usuario
// LOCAL de este mismo tenant. Ver spec §5.
@Entity("taller_parametros_historial")
export class TallerParametroHistorial {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: "clave", type: "varchar", length: 100 })
  clave: string;

  @Column({ name: "ambito", type: "enum", enum: ["tenant", "tienda"] })
  ambito: AmbitoParametro;

  @Column({ name: "tienda_id", type: "int", default: 0 })
  tiendaId: number;

  @Column({ name: "destino", type: "varchar", length: 32, default: "" })
  destino: string;

  // NULL siempre para claves `sensible: true` en el catalogo -- solo se
  // registra QUE cambio, nunca el valor. Ver spec §5.
  @Column({ name: "valor_anterior", type: "text", nullable: true })
  valorAnterior: string | null;

  @Column({ name: "valor_nuevo", type: "text", nullable: true })
  valorNuevo: string | null;

  @Column({ name: "usuario_id", type: "int" })
  usuarioId: number;

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