// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) name String? email String? @unique emailVerified Boolean @default(false) firstPaymentDone Boolean @default(false) verified Boolean @default(false) accNo String? // island String? address String? id_card String? @unique dob DateTime? atoll Atoll? @relation(fields: [atollId], references: [id]) island Island? @relation(fields: [islandId], references: [id]) image String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt phoneNumber String @unique phoneNumberVerified Boolean @default(false) termsAccepted Boolean @default(false) policyAccepted Boolean @default(false) devices Device[] role String? lang String? atollId String? islandId String? Bill Payment[] @@map("user") } model Session { id String @id @default(cuid()) userId String token String @unique expiresAt DateTime ipAddress String? userAgent String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@map("session") } model Account { id String @id @default(cuid()) userId String accountId String providerId String accessToken String? refreshToken String? accessTokenExpiresAt DateTime? refreshTokenExpiresAt DateTime? scope String? password String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt idToken String? @@map("account") } model Verification { id String @id @default(cuid()) identifier String value String expiresAt DateTime createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@map("verification") } model Atoll { id String @id @default(cuid()) name String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt islands Island[] User User[] } model Island { id String @id @default(cuid()) atollId String atoll Atoll @relation(fields: [atollId], references: [id]) name String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt User User[] } model Device { id String @id @default(cuid()) name String mac String isActive Boolean @default(false) expiryDate DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt User User? @relation(fields: [userId], references: [id]) userId String? payment Payment? @relation(fields: [paymentId], references: [id]) paymentId String? } model Payment { id String @id @default(cuid()) numberOfMonths Int amount Float paid Boolean @default(false) user User @relation(fields: [userId], references: [id]) paidAt DateTime? expiresAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt devices Device[] userId String } model BillFormula { id String @id @default(cuid()) formula String baseAmount Float discountPercentage Float createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }