generator client { provider = "prisma-client-js" binaryTargets = ["native", "debian-openssl-1.1.x"] output = "../generated/prisma" } datasource db { provider = "postgres" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) name String password String? salt String? phone String? @unique email String @unique avatar String? isSystem Boolean? @map("is_system") isAdmin Boolean? @map("is_admin") lastSignTime DateTime? @map("last_sign_time") deactivatedTime DateTime? @map("deactivated_time") createdTime DateTime @default(now()) @map("created_time") deletedTime DateTime? @map("deleted_time") lastModifiedTime DateTime? @updatedAt @map("last_modified_time") @@map("users") } model Attachments { id String @id @default(cuid()) token String @unique hash String size Int mimetype String path String width Int? height Int? deletedTime DateTime? @map("deleted_time") createdTime DateTime @default(now()) @map("created_time") createdBy String @map("created_by") lastModifiedBy String? @map("last_modified_by") thumbnailPath String? @map("thumbnail_path") @@map("attachments") } model Notification { id String @id @default(cuid()) fromUserId String @map("from_user_id") toUserId String @map("to_user_id") type String @map("type") message String @map("message") urlPath String? @map("url_path") isRead Boolean @default(false) @map("is_read") createdTime DateTime @default(now()) @map("created_time") createdBy String @map("created_by") @@index([toUserId, isRead, createdTime]) @@map("notification") } model Setting { instanceId String @id @default(cuid()) @map("instance_id") disallowSignUp Boolean? @map("disallow_sign_up") disallowSpaceCreation Boolean? @map("disallow_space_creation") disallowSpaceInvitation Boolean? @map("disallow_space_invitation") enableEmailVerification Boolean? @map("enable_email_verification") aiConfig String? @map("ai_config") brandName String? @map("brand_name") brandLogo String? @map("brand_logo") @@map("setting") } model Trash { id String @id @default(cuid()) resourceType String @map("resource_type") resourceId String @map("resource_id") parentId String? @map("parent_id") deletedTime DateTime @default(now()) @map("deleted_time") deletedBy String @map("deleted_by") @@unique([resourceType, resourceId]) @@map("trash") } model UserLastVisit { id String @id @default(cuid()) userId String @map("user_id") resourceType String @map("resource_type") resourceId String @map("resource_id") parentResourceId String @map("parent_resource_id") lastVisitTime DateTime @default(now()) @map("last_visit_time") @@unique([userId, resourceType, parentResourceId]) @@index([userId, resourceType]) @@map("user_last_visit") } model OidcClient { id String @id @default(cuid()) clientId String @unique clientSecret String redirectUris String // 存储为JSON字符串 grantTypes String // 存储为JSON字符串 responseTypes String // 存储为JSON字符串 scope String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@map("oidc_clients") } model Resource { id String @id @default(cuid()) @map("id") title String? @map("title") description String? @map("description") type String? @map("type") fileId String? @unique url String? meta Json? @map("meta") status String? createdAt DateTime? @default(now()) @map("created_at") updatedAt DateTime? @updatedAt @map("updated_at") createdBy String? @map("created_by") updatedBy String? @map("updated_by") deletedAt DateTime? @map("deleted_at") isPublic Boolean? @default(true) @map("is_public") storageType String? @map("storage_type") // 索引 @@index([type]) @@index([createdAt]) @@map("resource") }