import {
  Entity, PrimaryColumn, Column, OneToOne, JoinColumn,
  ManyToOne, OneToMany
} from 'typeorm';
import { Users } from './users.entity';
import { ParentsChildren } from './parents_children.entity';
import { Dossier } from './dossiers.entity';

@Entity('parents', { schema: 'public' })
export class Parents {
  // PK = FK vers utilisateurs.id
  @PrimaryColumn('uuid', { name: 'id_utilisateur' })
  user_id: string;

  @OneToOne(() => Users, user => user.parent, { onDelete: 'CASCADE' })
  @JoinColumn({ name: 'id_utilisateur', referencedColumnName: 'id' })
  user: Users;

  // Co-parent (nullable) → FK vers utilisateurs.id
  @ManyToOne(() => Users, { nullable: true })
  @JoinColumn({ name: 'id_co_parent', referencedColumnName: 'id' })
  co_parent?: Users;

  /** Numéro de dossier famille (format AAAA-NNNNNN), attribué à la soumission (ticket #103) */
  @Column({ name: 'numero_dossier', length: 20, nullable: true })
  numero_dossier?: string;

  // Lien vers enfants via la table enfants_parents
  @OneToMany(() => ParentsChildren, pc => pc.parent)
  parentChildren: ParentsChildren[];

  // Lien vers les dossiers de ce parent
  @OneToMany(() => Dossier, d => d.parent)
  dossiers: Dossier[];
}
