Files
Nexus_Mat/prisma/schema.prisma
SpecialX d2468e9fca
Some checks failed
docker-push / build-and-push (push) Failing after 18s
docker-push / deploy (push) Has been skipped
fix: user registration with email support
2025-11-28 19:29:49 +08:00

101 lines
2.2 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
enum UserRole {
USER
ADMIN
CREATOR
MANAGER
}
enum UserStatus {
ACTIVE
BANNED
FLAGGED
}
enum MaterialType {
CODE
ASSET_ZIP
VIDEO
}
model User {
id String @id @default(uuid())
username String @unique @db.VarChar(50)
email String? @unique @db.VarChar(255)
password String? @db.VarChar(255) // Made optional for guest/demo purposes if needed
avatarUrl String? @db.VarChar(500)
role UserRole @default(CREATOR)
status UserStatus @default(ACTIVE)
createdAt DateTime @default(now())
lastLogin DateTime @updatedAt
materials Material[]
comments Comment[]
favorites Favorite[]
@@index([username])
}
model Material {
id String @id @default(uuid())
title String @db.VarChar(100)
description String @db.Text
type MaterialType
contentUrl String? @db.VarChar(500)
codeSnippet String? @db.LongText
language String? @db.VarChar(20)
views Int @default(0)
downloads Int @default(0)
authorId String
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
comments Comment[]
favorites Favorite[]
tags Tag[]
@@index([type])
@@index([authorId])
}
model Comment {
id String @id @default(uuid())
content String @db.VarChar(1000)
createdAt DateTime @default(now())
authorId String
author User @relation(fields: [authorId], references: [id])
materialId String
material Material @relation(fields: [materialId], references: [id], onDelete: Cascade)
@@index([materialId])
}
model Favorite {
userId String
materialId String
user User @relation(fields: [userId], references: [id])
material Material @relation(fields: [materialId], references: [id])
@@id([userId, materialId])
}
model Tag {
id Int @id @default(autoincrement())
name String @unique
materials Material[]
}