@@ -18,10 +18,21 @@ import {
1818 type EventId ,
1919 type TaskId ,
2020 type UserId ,
21+ normalizeDbUser ,
2122} from "@dotkomonline/types"
2223import invariant from "tiny-invariant"
2324import { parseOrReport } from "../../invariant"
2425
26+ type WithUserFlagLinks = { user : Parameters < typeof normalizeDbUser > [ 0 ] ; [ k : string ] : unknown }
27+
28+ function normalizeAttendee < T extends WithUserFlagLinks > ( attendee : T ) {
29+ return { ...attendee , user : normalizeDbUser ( attendee . user ) }
30+ }
31+
32+ function normalizeAttendance < T extends { attendees : WithUserFlagLinks [ ] ; [ k : string ] : unknown } > ( attendance : T ) {
33+ return { ...attendance , attendees : attendance . attendees . map ( normalizeAttendee ) }
34+ }
35+
2536export interface AttendanceRepository {
2637 createAttendance ( handle : DBHandle , data : AttendanceWrite ) : Promise < Attendance >
2738 findAttendanceById ( handle : DBHandle , attendanceId : AttendanceId ) : Promise < Attendance | null >
@@ -102,6 +113,11 @@ export function getAttendanceRepository(): AttendanceRepository {
102113 user : {
103114 include : {
104115 memberships : true ,
116+ userFlagLinks : {
117+ include : {
118+ userFlag : true ,
119+ } ,
120+ } ,
105121 } ,
106122 } ,
107123 } ,
@@ -112,7 +128,7 @@ export function getAttendanceRepository(): AttendanceRepository {
112128 } ,
113129 } )
114130
115- return parseOrReport ( AttendanceSchema . nullable ( ) , attendance )
131+ return parseOrReport ( AttendanceSchema . nullable ( ) , attendance ? normalizeAttendance ( attendance ) : null )
116132 } ,
117133
118134 async findAttendancesByIds ( handle , attendanceIds ) {
@@ -129,6 +145,11 @@ export function getAttendanceRepository(): AttendanceRepository {
129145 user : {
130146 include : {
131147 memberships : true ,
148+ userFlagLinks : {
149+ include : {
150+ userFlag : true ,
151+ } ,
152+ } ,
132153 } ,
133154 } ,
134155 } ,
@@ -139,7 +160,7 @@ export function getAttendanceRepository(): AttendanceRepository {
139160 } ,
140161 } )
141162
142- return attendances . map ( ( attendance ) => parseOrReport ( AttendanceSchema , attendance ) )
163+ return attendances . map ( ( attendance ) => parseOrReport ( AttendanceSchema , normalizeAttendance ( attendance ) ) )
143164 } ,
144165
145166 async findAttendanceSummariesByIds ( handle , attendanceIds , userId ) {
@@ -165,6 +186,11 @@ export function getAttendanceRepository(): AttendanceRepository {
165186 user : {
166187 include : {
167188 memberships : true ,
189+ userFlagLinks : {
190+ include : {
191+ userFlag : true ,
192+ } ,
193+ } ,
168194 } ,
169195 } ,
170196 } ,
@@ -184,7 +210,7 @@ export function getAttendanceRepository(): AttendanceRepository {
184210
185211 return {
186212 ...attendance ,
187- currentUserAttendee : currentAttendee || null ,
213+ currentUserAttendee : currentAttendee ? normalizeAttendee ( currentAttendee ) : null ,
188214 reservedAttendeeCount : attendance . _count . attendees ,
189215 }
190216 } )
@@ -208,6 +234,11 @@ export function getAttendanceRepository(): AttendanceRepository {
208234 user : {
209235 include : {
210236 memberships : true ,
237+ userFlagLinks : {
238+ include : {
239+ userFlag : true ,
240+ } ,
241+ } ,
211242 } ,
212243 } ,
213244 } ,
@@ -218,7 +249,7 @@ export function getAttendanceRepository(): AttendanceRepository {
218249 } ,
219250 } )
220251
221- return parseOrReport ( AttendanceSchema . nullable ( ) , attendance )
252+ return parseOrReport ( AttendanceSchema . nullable ( ) , attendance ? normalizeAttendance ( attendance ) : null )
222253 } ,
223254
224255 async findAttendanceByAttendeeId ( handle , attendeeId ) {
@@ -237,6 +268,11 @@ export function getAttendanceRepository(): AttendanceRepository {
237268 user : {
238269 include : {
239270 memberships : true ,
271+ userFlagLinks : {
272+ include : {
273+ userFlag : true ,
274+ } ,
275+ } ,
240276 } ,
241277 } ,
242278 } ,
@@ -247,7 +283,7 @@ export function getAttendanceRepository(): AttendanceRepository {
247283 } ,
248284 } )
249285
250- return parseOrReport ( AttendanceSchema . nullable ( ) , attendance )
286+ return parseOrReport ( AttendanceSchema . nullable ( ) , attendance ? normalizeAttendance ( attendance ) : null )
251287 } ,
252288
253289 async findAttendanceByAttendeePaymentId ( handle , attendeePaymentId ) {
@@ -266,6 +302,11 @@ export function getAttendanceRepository(): AttendanceRepository {
266302 user : {
267303 include : {
268304 memberships : true ,
305+ userFlagLinks : {
306+ include : {
307+ userFlag : true ,
308+ } ,
309+ } ,
269310 } ,
270311 } ,
271312 } ,
@@ -276,7 +317,7 @@ export function getAttendanceRepository(): AttendanceRepository {
276317 } ,
277318 } )
278319
279- return parseOrReport ( AttendanceSchema . nullable ( ) , attendance )
320+ return parseOrReport ( AttendanceSchema . nullable ( ) , attendance ? normalizeAttendance ( attendance ) : null )
280321 } ,
281322
282323 async findAttendanceByEventId ( handle , eventId ) {
@@ -295,6 +336,11 @@ export function getAttendanceRepository(): AttendanceRepository {
295336 user : {
296337 include : {
297338 memberships : true ,
339+ userFlagLinks : {
340+ include : {
341+ userFlag : true ,
342+ } ,
343+ } ,
298344 } ,
299345 } ,
300346 } ,
@@ -305,7 +351,7 @@ export function getAttendanceRepository(): AttendanceRepository {
305351 } ,
306352 } )
307353
308- return parseOrReport ( AttendanceSchema . nullable ( ) , attendance )
354+ return parseOrReport ( AttendanceSchema . nullable ( ) , attendance ? normalizeAttendance ( attendance ) : null )
309355 } ,
310356
311357 async updateAttendanceById ( handle , attendanceId , data ) {
@@ -375,12 +421,17 @@ export function getAttendanceRepository(): AttendanceRepository {
375421 user : {
376422 include : {
377423 memberships : true ,
424+ userFlagLinks : {
425+ include : {
426+ userFlag : true ,
427+ } ,
428+ } ,
378429 } ,
379430 } ,
380431 } ,
381432 } )
382433
383- return parseOrReport ( AttendeeSchema , attendee )
434+ return parseOrReport ( AttendeeSchema , normalizeAttendee ( attendee ) )
384435 } ,
385436
386437 async deleteAttendeeById ( handle , attendeeId ) {
@@ -400,12 +451,17 @@ export function getAttendanceRepository(): AttendanceRepository {
400451 user : {
401452 include : {
402453 memberships : true ,
454+ userFlagLinks : {
455+ include : {
456+ userFlag : true ,
457+ } ,
458+ } ,
403459 } ,
404460 } ,
405461 } ,
406462 } )
407463
408- return parseOrReport ( AttendeeSchema . nullable ( ) , attendee )
464+ return parseOrReport ( AttendeeSchema . nullable ( ) , attendee ? normalizeAttendee ( attendee ) : null )
409465 } ,
410466
411467 async updateAttendeeById ( handle , attendeeId , data ) {
@@ -418,12 +474,17 @@ export function getAttendanceRepository(): AttendanceRepository {
418474 user : {
419475 include : {
420476 memberships : true ,
477+ userFlagLinks : {
478+ include : {
479+ userFlag : true ,
480+ } ,
481+ } ,
421482 } ,
422483 } ,
423484 } ,
424485 } )
425486
426- return parseOrReport ( AttendeeSchema , attendee )
487+ return parseOrReport ( AttendeeSchema , normalizeAttendee ( attendee ) )
427488 } ,
428489
429490 async updateAttendeePaymentById ( handle , attendeeId , data ) {
@@ -436,12 +497,17 @@ export function getAttendanceRepository(): AttendanceRepository {
436497 user : {
437498 include : {
438499 memberships : true ,
500+ userFlagLinks : {
501+ include : {
502+ userFlag : true ,
503+ } ,
504+ } ,
439505 } ,
440506 } ,
441507 } ,
442508 } )
443509
444- return parseOrReport ( AttendeeSchema , attendee )
510+ return parseOrReport ( AttendeeSchema , normalizeAttendee ( attendee ) )
445511 } ,
446512
447513 async createAttendancePool ( handle , attendanceId , mergeAttendancePoolsTaskId , data ) {
0 commit comments