feat(#171): API couples-garde AM (liste + courant)

Symétrique #168 : GET/PUT /assistantes-maternelles/me/couples-garde
avec parents[] pour le bandeau enfant|foyer. Colonne
id_placement_garde_courant sur assistantes_maternelles.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-24 12:14:16 +02:00
co-authored by Cursor
parent 2380aa9826
commit da71803852
10 changed files with 439 additions and 18 deletions
@@ -0,0 +1,67 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
/** Identité minimale enfant — ticket #171 (miroir #168) */
export class CoupleGardeAmEnfantDto {
@ApiProperty({ format: 'uuid' })
id: string;
@ApiPropertyOptional()
prenom?: string | null;
@ApiPropertyOptional()
nom?: string | null;
@ApiPropertyOptional()
photo_url?: string | null;
}
/** Identité minimale parent pour bandeau AM — ticket #171 */
export class CoupleGardeAmParentDto {
@ApiProperty({ format: 'uuid', description: 'UUID utilisateur du parent' })
id: string;
@ApiPropertyOptional()
prenom?: string | null;
@ApiPropertyOptional()
nom?: string | null;
@ApiPropertyOptional()
photo_url?: string | null;
}
/**
* Un couple côté AM = placement actif enfant ↔ foyer parents.
* `id` = enfants_assistantes_maternelles.id (même clé que #168).
*/
export class CoupleGardeAmDto {
@ApiProperty({
format: 'uuid',
description: 'Id du placement (enfants_assistantes_maternelles.id)',
})
id: string;
@ApiProperty({ type: CoupleGardeAmEnfantDto })
enfant: CoupleGardeAmEnfantDto;
@ApiProperty({
type: [CoupleGardeAmParentDto],
description: 'Parents rattachés à l’enfant (0–2 typiquement)',
})
parents: CoupleGardeAmParentDto[];
@ApiProperty({ description: 'True si c’est le couple actuellement sélectionné' })
courant: boolean;
}
export class CouplesGardeAmResponseDto {
@ApiProperty({ type: [CoupleGardeAmDto] })
couples: CoupleGardeAmDto[];
@ApiPropertyOptional({
format: 'uuid',
nullable: true,
description: 'Id du couple courant (null si aucun)',
})
couple_courant_id: string | null;
}