generator client { provider = "prisma-client-js" } datasource db { provider = "mysql" url = env("DATABASE_URL") } model AppUser { id Int @id @default(autoincrement()) email String password String firstName String? @db.VarChar(45) lastName String? @db.VarChar(45) created_at DateTime @default(now()) } model Institution { id Int @id @default(autoincrement()) name String? @db.VarChar(100) brn String? @db.VarChar(100) ins_admin_email String? address String category InstitutionCategory status InstitutionStatus @default(PENDING) rejectionReason String? created_at DateTime @default(now()) SchoolAdditionalInfo SchoolAdditionalInfo[] InstitutionBankInfo InstitutionBankInfo[] InstitutionUser InstitutionUser[] SchoolAcademicYear SchoolAcademicYear[] SchoolFeeCategory SchoolFeeCategory[] SchoolGrade SchoolGrade[] } model SchoolAdditionalInfo { id Int @id @default(autoincrement()) type String number_of_grades Int number_of_students Int institution Institution @relation(fields: [institutionId], references: [id]) institutionId Int created_at DateTime @default(now()) } model InstitutionBankInfo { id Int @id @default(autoincrement()) name_of_bank String branch_name String account_number String swift_code String institution Institution @relation(fields: [institutionId], references: [id]) institutionId Int @unique created_at DateTime @default(now()) } model InstitutionUser { id Int @id @default(autoincrement()) email String? password String phone String? @db.VarChar(45) institution Institution @relation(fields: [institutionId], references: [id]) institutionId Int @unique is_email_verified Boolean @default(false) created_at DateTime @default(now()) role InstitutionUserRole[] // Added a role field } enum InstitutionRoleTypes { INSTITUTIONADMIN INSTITUTIONMANAGER } model InstitutionUserRole { id Int @id name InstitutionRoleTypes @unique created_at DateTime @default(now()) users InstitutionUser[] // Roles can be associated with multiple users } model SchoolAcademicYear { id Int @id @default(autoincrement()) year Int start_date DateTime end_date DateTime institution Institution @relation(fields: [institutionId], references: [id]) institutionId Int created_at DateTime @default(now()) } model SchoolFeeCategory { id Int @id @default(autoincrement()) name String institution Institution @relation(fields: [institutionId], references: [id]) institutionId Int created_at DateTime @default(now()) } model SchoolGrade { id Int @id @default(autoincrement()) grade String institution Institution @relation(fields: [institutionId], references: [id]) institutionId Int created_at DateTime @default(now()) SchoolSection SchoolSection[] } model SchoolSection { id Int @id @default(autoincrement()) section String grade SchoolGrade @relation(fields: [gradeId], references: [id]) gradeId Int created_at DateTime @default(now()) } enum InstitutionCategory { SCHOOL } enum InstitutionStatus { APPROVED REJECTED PENDING } model ResolvedSystemUser { id Int @id @default(autoincrement()) email String? @unique password String firstName String? @db.VarChar(45) lastName String? @db.VarChar(45) role ResolvedRole[] created_at DateTime @default(now()) } model ResolvedRole { id Int @id name ResolvedRoleTypes @unique created_at DateTime @default(now()) users ResolvedSystemUser[] // Roles can be associated with multiple users } enum ResolvedRoleTypes { SUPERADMIN ADMIN }