diff --git a/src/entities/assistantes_maternelles.entity.ts b/src/entities/assistantes_maternelles.entity.ts new file mode 100644 index 0000000..7dfb7ad --- /dev/null +++ b/src/entities/assistantes_maternelles.entity.ts @@ -0,0 +1,41 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm"; +import { Users } from "./user.entity"; + +@Entity('assistantes_maternelles') +export class AssistanteMaternelle { + // Declarer les proprietes ici + @PrimaryColumn('uuid') + user_id: string; + + @OneToOne(() => Users, user => user.assistanteMaternelle, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'user_id' }) + user: Users; + + @Column({type: 'varchar'}) + approval_number: string; + + @Column({type: 'date'}) + birthdate: Date; + + @Column({type: 'varchar'}) + birthplace_city: string; + + @Column({type: 'varchar'}) + birthplace_country: string; + + @Column({type: 'text'}) + nir_encrypted: string; + + @Column({type: 'int'}) + max_children: number; + + @Column({type: 'text'}) + bio: string; + + @Column({type: 'boolean', default: true}) + is_available: boolean; + + @Column({type: 'varchar'}) + city: string; + +} \ No newline at end of file diff --git a/src/entities/children.entity.ts b/src/entities/children.entity.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/entities/parents.entity.ts b/src/entities/parents.entity.ts new file mode 100644 index 0000000..e1dcb95 --- /dev/null +++ b/src/entities/parents.entity.ts @@ -0,0 +1,20 @@ +import { Column, Entity, JoinColumn, OneToOne, PrimaryColumn } from "typeorm"; +import { Users } from "./user.entity"; + +@Entity('parents') +export class Parents { + + @PrimaryColumn('uuid') + user_id: string; + + @OneToOne(() => Users, user => user.parent, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'user_id' }) + user: Users; + + @Column({ type: 'uuid', nullable: true }) + co_parent_id?: string; + + @OneToOne(() => Users) + @JoinColumn({ name: 'co_parent_id' }) + co_parent?: Users; +} diff --git a/src/entities/user.entity.ts b/src/entities/user.entity.ts new file mode 100644 index 0000000..449d227 --- /dev/null +++ b/src/entities/user.entity.ts @@ -0,0 +1,73 @@ +import { + Entity, PrimaryGeneratedColumn, Column, + CreateDateColumn, UpdateDateColumn, + OneToOne +} from 'typeorm'; +import { AssistanteMaternelle } from './assistantes_maternelles.entity'; +import { Parents } from './parents.entity'; +export enum UserRole { + PARENT = 'PARENT', + ASSISTANT = 'ASSISTANT', + GESTIONNAIRE = 'GESTIONNAIRE', + ADMIN = 'ADMIN', +} + +@Entity('users') +export class Users { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ unique: true }) + email: string; + + @Column() + password_hash: string; + + @Column() + first_name: string; + + @Column() + last_name: string; + + @Column({ + type: 'enum', + enum: UserRole, + default: UserRole.PARENT, + }) + role: UserRole; + + @Column({ default: 'pending' }) + status: string; + + @Column({ nullable: true }) + phone: string; + + @Column({ nullable: true }) + address: string; + + @Column({ nullable: true }) + photo_url: string; + + @Column({ default: false }) + consent_photo: boolean; + + @Column({ type: 'timestamp', nullable: true }) + consent_photo_at: Date; + + @Column({ default: false }) + must_change_password: boolean; + + @CreateDateColumn() + created_at: Date; + + @UpdateDateColumn() + updated_at: Date; + + @OneToOne(() => AssistanteMaternelle, a => a.user) + assistanteMaternelle?: AssistanteMaternelle; + + @OneToOne(() => Parents, p => p.user) + parent?: Parents; + +} +