diff --git a/src/entities/children.entity.ts b/src/entities/children.entity.ts index e69de29..5218878 100644 --- a/src/entities/children.entity.ts +++ b/src/entities/children.entity.ts @@ -0,0 +1,60 @@ +import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany, PrimaryColumn, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Parents } from "./parents.entity"; +import { ParentsChildren } from "./parents_children.entity"; +import { Dossier } from "./dossiers.entity"; + +export enum ChildStatus { + A_NAITRE = 'A_NAÎTRE', + ACTIF = 'ACTIF', + SCOLARISE = 'SCOLARISE' +} + +@Entity('children') +export class Children { + + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ nullable: true }) + first_name: string; + + @Column({ nullable: true }) + last_name: string; + + @Column({ type: 'date', nullable: true }) + birthdate: Date; + + @Column({ type: 'date', nullable: true }) + due_date: Date; + + @Column({ nullable: true }) + photo_url: string; + + @Column({ nullable: true }) + consent_photo: boolean; + + @Column({ type: 'timestamp', nullable: true }) + consent_photo_at: Date; + + @Column({nullable: true }) + is_multiple: boolean + + @Column({ + type: 'enum', + enum: ChildStatus, + default: ChildStatus.A_NAITRE, + }) + status: ChildStatus; + + @CreateDateColumn() + created_at: Date; + + @UpdateDateColumn() + updated_at: Date; + + @OneToMany(() => ParentsChildren, pc => pc.child, { onDelete: 'CASCADE' }) + parentChildren: ParentsChildren[]; + + @OneToMany(() => Dossier, d => d.child) + dossiers: Dossier[]; +} diff --git a/src/entities/dossiers.entity.ts b/src/entities/dossiers.entity.ts new file mode 100644 index 0000000..3d29d5a --- /dev/null +++ b/src/entities/dossiers.entity.ts @@ -0,0 +1,41 @@ +import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Parents } from "./parents.entity"; +import { Children } from "./children.entity"; + +@Entity('dossiers') +export class Dossier { + @PrimaryGeneratedColumn('uuid') + id: string; + + @ManyToOne(() => Parents, p => p.dossiers, {onDelete: 'CASCADE'} ) + @JoinColumn({ name: 'parent_id', referencedColumnName: 'user_id' }) + parent: Parents; + + @ManyToOne(() => Children, c => c.dossiers, {onDelete:'CASCADE'}) + @JoinColumn({ name: 'child_id', referencedColumnName: 'id' }) + child: Children; + + @Column({type: 'text', nullable: true}) + presentation: string; + + @Column({type: 'varchar', nullable: true}) + type_contract: string; + + @Column({type:'boolean', nullable: true}) + meals: boolean; + + @Column({type: 'decimal', nullable: true}) + budget: number; + + @Column({type: 'json', nullable: true}) + desired_schedule: any; + + @Column({type: 'varchar', default: 'sent'}) + status: string; + + @CreateDateColumn() + created_at: Date; + + @UpdateDateColumn() + updated_at: Date; +} diff --git a/src/entities/parents.entity.ts b/src/entities/parents.entity.ts index e1dcb95..3980813 100644 --- a/src/entities/parents.entity.ts +++ b/src/entities/parents.entity.ts @@ -1,5 +1,7 @@ -import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm"; +import { Column, Entity, JoinColumn, OneToMany, OneToOne, PrimaryColumn } from "typeorm"; import { Users } from "./user.entity"; +import { ParentsChildren } from "./parents_children.entity"; +import { Dossier } from "./dossiers.entity"; @Entity('parents') export class Parents { @@ -17,4 +19,10 @@ export class Parents { @OneToOne(() => Users) @JoinColumn({ name: 'co_parent_id' }) co_parent?: Users; + + @OneToMany(() => ParentsChildren, pc => pc.parent, { onDelete: 'CASCADE' }) + parentChildren: ParentsChildren[]; + + @OneToMany(() => Dossier, d => d.parent) + dossiers: Dossier[]; } diff --git a/src/entities/parents_children.entity.ts b/src/entities/parents_children.entity.ts new file mode 100644 index 0000000..6f4f598 --- /dev/null +++ b/src/entities/parents_children.entity.ts @@ -0,0 +1,21 @@ +import { Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm"; +import { Parents } from "./parents.entity"; +import { Children } from "./children.entity"; + +@Entity('parents_children') +export class ParentsChildren { + + @PrimaryColumn('uuid') + parent_id: string; + + @PrimaryColumn('uuid') + child_id: string; + + @ManyToOne(() => Parents, (parent) => parent.parentChildren, {onDelete: 'CASCADE'}) + @JoinColumn({ name: 'parent_id', referencedColumnName: 'user_id' }) + parent: Parents; + + @ManyToOne(() => Children, (child) => child.parentChildren, {onDelete: 'CASCADE'}) + @JoinColumn({ name: 'child_id', referencedColumnName: 'id' }) + child: Children; +} \ No newline at end of file