48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
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';
|
||
import { AmChildren } from './am_children.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;
|
||
|
||
/**
|
||
* Placement AM↔enfant sélectionné sur le TdB parent (couple actif) — ticket #168.
|
||
* Null / absent = le front prend le premier couple actif retourné par l’API.
|
||
*/
|
||
@Column({ name: 'id_placement_garde_courant', type: 'uuid', nullable: true })
|
||
id_placement_garde_courant?: string;
|
||
|
||
@ManyToOne(() => AmChildren, { nullable: true, onDelete: 'SET NULL' })
|
||
@JoinColumn({ name: 'id_placement_garde_courant', referencedColumnName: 'id' })
|
||
placement_garde_courant?: AmChildren;
|
||
|
||
// 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[];
|
||
}
|