Files
record-app-next/prisma/schema.prisma
2025-07-31 17:05:07 +08:00

95 lines
2.2 KiB
Plaintext

// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite" // 这里已经为你设置好了
url = env("DATABASE_URL")
}
// 用户模型
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
image String?
hashedPassword String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
recordings Recording[]
accounts Account[]
sessions Session[]
settings UserSettings?
}
// 用户设置模型
model UserSettings {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
// 音频设置
defaultQuality String @default("medium") // low, medium, high, lossless
// 隐私设置
publicProfile Boolean @default(false)
allowDownload Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
// 录音模型
model Recording {
id String @id @default(cuid())
title String
audioUrl String
duration Int
fileSize Int
mimeType String
createdAt DateTime @default(now())
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
// NextAuth.js 必要的模型
model Account {
id String @id @default(cuid())
userId String
type String
provider String
providerAccountId String
refresh_token String?
access_token String?
expires_at Int?
token_type String?
scope String?
id_token String?
session_state String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerAccountId])
}
model Session {
id String @id @default(cuid())
sessionToken String @unique
userId String
expires DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model VerificationToken {
identifier String
token String @unique
expires DateTime
@@unique([identifier, token])
}