🗃️ db: add collection schema support and finalize schema structure
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 31s

This commit is contained in:
2026-05-26 21:32:13 +07:00
parent 8cb63e0e36
commit e07d9cfa87

View File

@ -91,6 +91,13 @@ enum privacy_level {
private private
} }
enum collection_access_level {
owner
moderator
contributor
viewer
}
/** /**
@ -142,6 +149,9 @@ model User {
comment_reports CommentReport[] comment_reports CommentReport[]
home_media_banners HomeMediaBanner[] home_media_banners HomeMediaBanner[]
watch_histories UserWatchHistory[] watch_histories UserWatchHistory[]
saved_collections CollectionMember[] @relation("CollectionMemberUser")
invited_collections CollectionMember[] @relation("CollectionMemberInviter")
contributed_collections MediaCollection[] @relation("MediaCollectionAdder")
@@index([email]) @@index([email])
@@index([username]) @@index([username])
@@map("users") @@map("users")
@ -281,9 +291,26 @@ model Collection {
privacy privacy_level @default(private) privacy privacy_level @default(private)
created_at DateTime @default(now()) @db.Timestamptz() created_at DateTime @default(now()) @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz() updated_at DateTime @updatedAt @db.Timestamptz()
saved_media MediaCollection[]
members CollectionMember[]
@@map("collections") @@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 created_by_id String? @db.Uuid
updated_by_id String? @db.Uuid updated_by_id String? @db.Uuid
deleted_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") @@map("medias")
} }
@ -365,6 +393,19 @@ model MediaSubmission {
@@map("media_submissions") @@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 { model MediaTrailer {
media_id String @id @db.Uuid media_id String @id @db.Uuid
url String? @db.VarChar(255) url String? @db.VarChar(255)