138 lines
2.6 KiB
Plaintext
138 lines
2.6 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "sqlite"
|
|
url = "file:./dev.db"
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(uuid())
|
|
email String @unique
|
|
name String
|
|
role Role @default(STUDENT)
|
|
year Int?
|
|
faculty String?
|
|
balance Float?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
// Relationships
|
|
enrollments Enrollment[]
|
|
surveys Survey[]
|
|
chatSessions ChatSession[]
|
|
advisorId String?
|
|
advisor User? @relation("AdvisorStudent", fields: [advisorId], references: [id])
|
|
students User[] @relation("AdvisorStudent")
|
|
|
|
@@map("users")
|
|
}
|
|
|
|
model Course {
|
|
id String @id @default(uuid())
|
|
code String @unique
|
|
name String
|
|
description String?
|
|
credits Int
|
|
semester String
|
|
schedule String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
// Relationships
|
|
enrollments Enrollment[]
|
|
|
|
@@map("courses")
|
|
}
|
|
|
|
model Enrollment {
|
|
id String @id @default(uuid())
|
|
userId String
|
|
courseId String
|
|
grade String?
|
|
status EnrollmentStatus @default(ENROLLED)
|
|
|
|
// Relationships
|
|
user User @relation(fields: [userId], references: [id])
|
|
course Course @relation(fields: [courseId], references: [id])
|
|
|
|
@@unique([userId, courseId])
|
|
@@map("enrollments")
|
|
}
|
|
|
|
model FAQ {
|
|
id String @id @default(uuid())
|
|
question String
|
|
answer String
|
|
category String
|
|
language String @default("en")
|
|
priority Int @default(1)
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@map("faqs")
|
|
}
|
|
|
|
model ChatSession {
|
|
id String @id @default(uuid())
|
|
userId String?
|
|
type ChatType @default(GENERAL)
|
|
messages Json
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
// Relationships
|
|
user User? @relation(fields: [userId], references: [id])
|
|
|
|
@@map("chat_sessions")
|
|
}
|
|
|
|
model Survey {
|
|
id String @id @default(uuid())
|
|
userId String?
|
|
type String
|
|
rating Int
|
|
feedback String?
|
|
sessionId String?
|
|
createdAt DateTime @default(now())
|
|
|
|
// Relationships
|
|
user User? @relation(fields: [userId], references: [id])
|
|
|
|
@@map("surveys")
|
|
}
|
|
|
|
model AccessibilityAudit {
|
|
id String @id @default(uuid())
|
|
url String
|
|
imagePath String?
|
|
altText String?
|
|
wcagScore Float?
|
|
issues Json?
|
|
suggestions Json?
|
|
createdAt DateTime @default(now())
|
|
|
|
@@map("accessibility_audits")
|
|
}
|
|
|
|
enum Role {
|
|
STUDENT
|
|
STAFF
|
|
ADMIN
|
|
}
|
|
|
|
enum EnrollmentStatus {
|
|
ENROLLED
|
|
COMPLETED
|
|
DROPPED
|
|
PENDING
|
|
}
|
|
|
|
enum ChatType {
|
|
GENERAL
|
|
MENTAL_HEALTH
|
|
ACADEMIC
|
|
TECHNICAL
|
|
}
|