From e07d9cfa871e42db4905eb396ac0990325170ae9 Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Tue, 26 May 2026 21:32:13 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20db:=20add=20collection?= =?UTF-8?q?=20schema=20support=20and=20finalize=20schema=20structure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prisma/schema.prisma | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 37b6bb7..0aeca59 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -91,6 +91,13 @@ enum privacy_level { private } +enum collection_access_level { + owner + moderator + contributor + viewer +} + /** @@ -142,6 +149,9 @@ model User { comment_reports CommentReport[] home_media_banners HomeMediaBanner[] watch_histories UserWatchHistory[] + saved_collections CollectionMember[] @relation("CollectionMemberUser") + invited_collections CollectionMember[] @relation("CollectionMemberInviter") + contributed_collections MediaCollection[] @relation("MediaCollectionAdder") @@index([email]) @@index([username]) @@map("users") @@ -281,9 +291,26 @@ model Collection { privacy privacy_level @default(private) created_at DateTime @default(now()) @db.Timestamptz() updated_at DateTime @updatedAt @db.Timestamptz() + + saved_media MediaCollection[] + members CollectionMember[] @@map("collections") } +model CollectionMember { + collection Collection @relation(fields: [collection_id], references: [id]) + user User @relation(fields: [user_id], references: [id], name: "CollectionMemberUser") + access_level collection_access_level + invited_by User? @relation(fields: [invited_by_id], references: [id], name: "CollectionMemberInviter") + invited_at DateTime? @db.Timestamptz() + + collection_id String @db.Uuid + user_id String @db.Uuid + invited_by_id String? @db.Uuid + @@id([collection_id, user_id]) + @@map("collection_members") +} + /** @@ -345,7 +372,8 @@ model Media { created_by_id String? @db.Uuid updated_by_id String? @db.Uuid deleted_by_id String? @db.Uuid - home_media_banners HomeMediaBanner[] + home_media_banners HomeMediaBanner[] + saved_to_collections MediaCollection[] @@map("medias") } @@ -365,6 +393,19 @@ model MediaSubmission { @@map("media_submissions") } +model MediaCollection { + media Media @relation(fields: [media_id], references: [id]) + collection Collection @relation(fields: [collection_id], references: [id]) + added_by User @relation(fields: [added_by_id], references: [id], name: "MediaCollectionAdder") + added_at DateTime @default(now()) @db.Timestamptz() + + media_id String @db.Uuid + collection_id String @db.Uuid + added_by_id String @db.Uuid + @@id([media_id, collection_id]) + @@map("media_collections") +} + model MediaTrailer { media_id String @id @db.Uuid url String? @db.VarChar(255)