import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, RelationId, } from 'typeorm'; import { CardInstance } from './card_instances.entity'; import { Users } from './users.entity'; export enum CardResponseActionType { ACCEPT = 'accept', REFUSE = 'refuse', ACK = 'ack', } @Entity('card_responses', { schema: 'public' }) export class CardResponse { @PrimaryGeneratedColumn('uuid') id: string; /** FK carte — une seule source de vérité via @JoinColumn (pas de @Column doublon). */ @ManyToOne(() => CardInstance, (c) => c.responses, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'id_card', referencedColumnName: 'id' }) card: CardInstance; @RelationId((r: CardResponse) => r.card) id_card: string; @ManyToOne(() => Users, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'id_utilisateur', referencedColumnName: 'id' }) user: Users; @RelationId((r: CardResponse) => r.user) id_utilisateur: string; @Column({ type: 'enum', enum: CardResponseActionType, enumName: 'card_response_action_type', name: 'action', }) action: CardResponseActionType; @Column({ name: 'comment', type: 'text', nullable: true }) comment?: string; @CreateDateColumn({ name: 'cree_le', type: 'timestamptz' }) cree_le: Date; }