Files
gruperly/apps/backend/prisma/models/attendance.prisma
Jose Selesan 2e184845e1 feat: add absence notification and analytics features
- Implemented AbsenceNotifyView for notifying absence with session details.
- Created AnalyticsView for displaying group analytics and managing students at risk.
- Added ClassAttendanceView for marking attendance in classes.
- Defined new schemas for analytics and attendance in shared package.
2026-09-23 16:24:45 -03:00

51 lines
1.4 KiB
Plaintext

// 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")
}