/**
 * NormaStps Entity
 * Catálogo de normas STPS
 *
 * @module HSE
 * @table hse.normas_stps
 * @ddl schemas/03-hse-schema-ddl.sql
 * @rf RF-MAA017-005
 */

import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  UpdateDateColumn,
  OneToMany,
  Index,
} from 'typeorm';
import { NormaRequisito } from './norma-requisito.entity';

@Entity({ schema: 'hse', name: 'normas_stps' })
@Index(['codigo'], { unique: true })
export class NormaStps {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ type: 'varchar', length: 30, unique: true })
  codigo: string;

  @Column({ type: 'varchar', length: 300 })
  nombre: string;

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

  @Column({ name: 'fecha_publicacion', type: 'date', nullable: true })
  fechaPublicacion: Date;

  @Column({ name: 'ultima_actualizacion', type: 'date', nullable: true })
  ultimaActualizacion: Date;

  @Column({ name: 'aplica_construccion', type: 'boolean', default: true })
  aplicaConstruccion: boolean;

  @Column({ name: 'documento_url', type: 'varchar', length: 500, nullable: true })
  documentoUrl: string;

  @Column({ type: 'boolean', default: true })
  activo: boolean;

  @CreateDateColumn({ name: 'created_at', type: 'timestamptz' })
  createdAt: Date;

  @UpdateDateColumn({ name: 'updated_at', type: 'timestamptz' })
  updatedAt: Date;

  // Relations
  @OneToMany(() => NormaRequisito, (r) => r.norma)
  requisitos: NormaRequisito[];
}
