generator client { provider = "prisma-client-js" output = "../generated/prisma" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model User { id String @id @default(uuid()) patreonId String @unique patreonFullName String? imageUrl String? roles Role[] vods Vod[] Vtuber Vtuber[] } enum RoleName { user supporterTier1 supporterTier2 supporterTier3 supporterTier4 supporterTier5 supporterTier6 moderator admin } model Role { id String @id @default(cuid()) name String @unique users User[] } model RateLimiterFlexible { key String @id points Int expire DateTime? } model Stream { id String @id @default(cuid(2)) date DateTime createdAt DateTime @default(now()) updatedAt DateTime @updatedAt announcementUrl String? vods Vod[] @@map("stream_entity") } enum VodStatus { ordering pending approved rejected processing processed } model Vod { id String @id @default(cuid(2)) streamId String? stream Stream? @relation(fields: [streamId], references: [id]) uploaderId String // previously in Upload uploader User @relation(fields: [uploaderId], references: [id]) streamDate DateTime notes String? segmentKeys Json? sourceVideo String? hlsPlaylist String? thumbnail String? asrVtt String? status VodStatus @default(pending) sha256sum String? cidv1 String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt vtubers Vtuber[] } model Vtuber { id String @id @default(cuid(2)) image String? slug String? displayName String? chaturbate String? twitter String? patreon String? twitch String? tiktok String? onlyfans String? youtube String? linktree String? carrd String? fansly String? pornhub String? discord String? reddit String? throne String? instagram String? facebook String? merch String? description String? themeColor String? fanslyId String? chaturbateId String? twitterId String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt vods Vod[] uploaderId String uploader User @relation(fields: [uploaderId], references: [id]) }