Files
petitspas/backend/src/entities/card_responses.entity.ts
T
jmartinandCursor 1d3ec0b759 fix(cards): FK card_responses via relation JoinColumn + save(create)
Double mapping @Column/@JoinColumn sur id_card ; persist response via
card/user relations. Garde update() sur l’instance (évite save parent
qui nullifiait les FK enfants).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 15:18:43 +02:00

53 lines
1.3 KiB
TypeScript

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;
}