complete the following prisma models // This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client { provider = "prisma-client-js" output = "../generated/prisma" }

datasource db { provider = "sqlite" url = env("DATABASE_URL") }

// ================ model Account { // --- Core Identification --- id String @id @default(ulid())

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

// --- Virtual Relationships --- personalAccount PersonalAccount? professionalAccount ProfessionalAccount? businessAccount BusinessAccount? wallet Wallet? memberships Membership[] }

model PersonalAccount { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- account Account @relation(fields: [accountId], references: [id]) accountId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model ProfessionalAccount { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- account Account @relation(fields: [accountId], references: [id]) accountId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model BusinessAccount { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- account Account @relation(fields: [accountId], references: [id]) accountId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Wallet { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- account Account @relation(fields: [accountId], references: [id]) accountId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Group { // --- Core Identification --- id String @id @default(ulid())

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

// --- Virtual Relationships --- memberships Membership[] }

model Membership { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- group Group @relation(fields: [groupId], references: [id]) groupId String

account Account @relation(fields: [accountId], references: [id]) accountId String

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

@@unique([groupId, accountId]) }

// ================ model Page { // --- Core Identification --- id String @id @default(ulid())

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

// --- Virtual Relationships --- schoolPage SchoolPage? drivingSchoolPage DrivingSchoolPage? reviewCenterPage ReviewCenterPage? }

model SchoolPage { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- page Page @relation(fields: [pageId], references: [id]) pageId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model DrivingSchoolPage { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- page Page @relation(fields: [pageId], references: [id]) pageId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model ReviewCenterPage { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- page Page @relation(fields: [pageId], references: [id]) pageId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Post { // --- Core Identification --- id String @id @default(ulid())

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

// --- Virtual Relationships --- deletedPost DeletedPost? textPost TextPost? linkPost LinkPost? pollPost PollPost? questionPost QuestionPost? jobPost JobPost? comments Comment[] reports Report[] reactions Reaction[] responses Response[] }

model DeletedPost { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model TextPost { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model LinkPost { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model PollPost { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model QuestionPost { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model JobPost { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Comment { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

// --- Virtual Relationships --- replies Reply[] }

model Reply { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- comment Comment @relation(fields: [commentId], references: [id]) commentId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Attachment { id String @id @default(ulid()) }

model Topic { id String @id @default(ulid()) }

// ================ model Report { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Reaction { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

model Response { // --- Core Identification --- id String @id @default(ulid())

// --- Relationships --- post Post @relation(fields: [postId], references: [id]) postId String @unique

// --- Timestamps --- createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

// ================ model Notification { id String @id @default(ulid())

createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }