// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema // Get a free hosted Postgres database in seconds: `npx create-db` generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" } model User { id String @id @default(uuid()) username String @unique passwordHash String name String phone String @unique email String @unique gender String age Int driveFolderId String @unique isSuspended Boolean @default(false) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt folders Folder[] files FileAsset[] @@index([isSuspended, createdAt]) } model Folder { id String @id @default(uuid()) name String driveFolderId String @unique scopeKey String? @unique userId String parentId String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id], onDelete: Cascade) parent Folder? @relation("FolderTree", fields: [parentId], references: [id], onDelete: Cascade) children Folder[] @relation("FolderTree") files FileAsset[] @@unique([userId, parentId, name]) @@index([userId, parentId]) } model FileAsset { id String @id @default(uuid()) originalName String driveFileId String @unique mimeType String sizeBytes BigInt userId String folderId String? createdAt DateTime @default(now()) user User @relation(fields: [userId], references: [id], onDelete: Cascade) folder Folder? @relation(fields: [folderId], references: [id], onDelete: SetNull) @@index([userId, folderId, createdAt]) }