// Attendance & class sessions enum AttendanceStatus { PRESENT ABSENT EXCUSED } model ClassSession { id String @id @default(cuid()) groupId String startsAt DateTime createdAt DateTime @default(now()) updatedAt DateTime @updatedAt group Group @relation(fields: [groupId], references: [id], onDelete: Cascade) attendances Attendance[] slotReleases SlotRelease[] @@unique([groupId, startsAt]) @@map("class_sessions") } model Attendance { id String @id @default(cuid()) attendeeId String classSessionId String status AttendanceStatus markedAt DateTime @default(now()) attendee Attendee @relation(fields: [attendeeId], references: [id], onDelete: Cascade) classSession ClassSession @relation(fields: [classSessionId], references: [id], onDelete: Cascade) @@unique([attendeeId, classSessionId]) @@map("attendances") } model SlotRelease { id String @id @default(cuid()) attendeeId String classSessionId String isClaimed Boolean @default(false) createdAt DateTime @default(now()) attendee Attendee @relation(fields: [attendeeId], references: [id], onDelete: Cascade) classSession ClassSession @relation(fields: [classSessionId], references: [id], onDelete: Cascade) @@unique([attendeeId, classSessionId]) @@map("slot_releases") }