Compare commits

...

4 Commits

Author SHA1 Message Date
b8b30a930c 🗃️ db: add voice actor schema 2026-05-20 21:00:00 +07:00
0684c2511b 🗃️ db: add character relations to media and user preference schemas 2026-05-19 21:00:00 +07:00
2b5ee22731 🗃️ db: add media_external_links model 2026-05-18 21:00:00 +07:00
743abc0b7a 🗃️ db: add media-to-media relations 2026-05-17 21:00:00 +07:00
2 changed files with 993 additions and 920 deletions

File diff suppressed because it is too large Load Diff

View File

@ -61,6 +61,12 @@ enum media_season {
fall
}
enum character_role {
main
supporting
background
}
/**
@ -148,8 +154,8 @@ model UserSession {
}
model UserPreference {
user_id String @id @db.Uuid
// char_as_partner
user_id String @id @db.Uuid
char_as_partner Character @relation(fields: [char_as_partner_id], references: [id])
comment_picture String? @db.VarChar(255)
enable_watch_history Boolean @default(true)
enable_search_history Boolean @default(false)
@ -162,11 +168,12 @@ model UserPreference {
publish_partner Boolean @default(true)
subscribe_to_newsletter Boolean @default(true)
enable_security_alerts Boolean @default(true)
genre_preferences UserGenrePreference[]
rating_preferences UserRatingPreference[]
country_preferences UserCountryPreference[]
user User @relation(fields: [user_id], references: [id])
genre_preferences UserGenrePreference[]
rating_preferences UserRatingPreference[]
country_preferences UserCountryPreference[]
user User @relation(fields: [user_id], references: [id])
char_as_partner_id String @db.Uuid
@@map("user_preferences")
}
@ -255,9 +262,9 @@ model Media {
explicit_genres MediaExplicitGenre[]
themes MediaTheme[]
demographics MediaDemographic[]
// relations MediaRelation[]
// external_links MediaExternalLink[]
// characters MediaCharacter[]
relations MediaRelation[] @relation("MediaRelationMedia")
external_links MediaExternalLink[]
characters MediaCharacter[]
// approved_by User? @relation(fields: [approver_id], references: [id])
// approved_at Boolean @default(false)
// created_by User? @relation(fields: [created_by_id], references: [id])
@ -271,6 +278,7 @@ model Media {
status_id String @db.Uuid
age_rating_id String? @db.Uuid
country_id String? @db.Uuid
related_media MediaRelation[] @relation("MediaRelationRelatedMedia")
@@map("medias")
}
@ -420,6 +428,67 @@ model Genre {
@@map("genres")
}
model MediaRelation {
media Media @relation(fields: [media_id], references: [id], name: "MediaRelationMedia")
related_media Media @relation(fields: [related_media_id], references: [id], name: "MediaRelationRelatedMedia")
relation_type String @db.VarChar(50)
media_id String @db.Uuid
related_media_id String @db.Uuid
@@id([media_id, related_media_id])
@@map("media_relations")
}
model MediaExternalLink {
id String @id @db.Uuid @default(uuid(7))
media Media @relation(fields: [media_id], references: [id])
url String @db.VarChar(255)
site_name String? @db.VarChar(100)
media_id String @db.Uuid
@@map("media_external_links")
}
model MediaCharacter {
media Media @relation(fields: [media_id], references: [id])
character Character @relation(fields: [character_id], references: [id])
role character_role
media_id String @db.Uuid
character_id String @db.Uuid
@@id([media_id, character_id])
@@map("media_characters")
}
model Character {
id String @id @db.Uuid @default(uuid(7))
name String @db.VarChar(255)
image String? @db.VarChar(255)
small_image String? @db.VarChar(255)
mal_id Int? @unique
fanpage_url String? @db.VarChar(255)
liked Int @default(0)
deleted_at DateTime? @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz()
created_at DateTime @default(now()) @db.Timestamptz()
partnered_user UserPreference[]
media_characters MediaCharacter[]
@@map("characters")
}
model Staff {
id String @id @db.Uuid @default(uuid(7))
name String @db.VarChar(255)
image String? @db.VarChar(255)
mal_id Int? @unique
deleted_at DateTime? @db.Timestamptz()
updated_at DateTime @updatedAt @db.Timestamptz()
created_at DateTime @default(now()) @db.Timestamptz()
@@map("staff")
}
/**