pstream-backend/prisma/schema.prisma
2025-12-02 16:25:44 -06:00

160 lines
5.4 KiB
Text

generator client {
provider = "prisma-client"
output = "../generated"
moduleFormat = "esm"
}
datasource db {
provider = "postgresql"
}
model bookmarks {
tmdb_id String @db.VarChar(255)
user_id String @db.VarChar(255)
meta Json
updated_at DateTime @db.Timestamptz(0)
group String[]
favorite_episodes String[] @default([])
@@id([tmdb_id, user_id])
@@unique([tmdb_id, user_id], map: "bookmarks_tmdb_id_user_id_unique")
}
model challenge_codes {
code String @id @db.Uuid
flow String
auth_type String @db.VarChar(255)
created_at DateTime @db.Timestamptz(0)
expires_at DateTime @db.Timestamptz(0)
}
model mikro_orm_migrations {
id Int @id @default(autoincrement())
name String? @db.VarChar(255)
executed_at DateTime? @default(now()) @db.Timestamptz(6)
}
model progress_items {
id String @id @db.Uuid
tmdb_id String @db.VarChar(255)
user_id String @db.VarChar(255)
season_id String? @db.VarChar(255)
episode_id String? @db.VarChar(255)
meta Json
updated_at DateTime @db.Timestamptz(0)
duration BigInt
watched BigInt
season_number Int?
episode_number Int?
@@unique([tmdb_id, user_id, season_id, episode_id], map: "progress_items_tmdb_id_user_id_season_id_episode_id_unique")
}
model sessions {
id String @id @db.Uuid
user String
created_at DateTime @db.Timestamptz(0)
accessed_at DateTime @db.Timestamptz(0)
expires_at DateTime @db.Timestamptz(0)
device String
user_agent String
}
model user_settings {
id String @id
application_theme String? @db.VarChar(255)
application_language String? @db.VarChar(255)
default_subtitle_language String? @db.VarChar(255)
proxy_urls String[]
trakt_key String? @db.VarChar(255)
febbox_key String? @db.VarChar(255)
debrid_token String? @db.VarChar(255)
debrid_service String? @db.VarChar(255)
enable_thumbnails Boolean @default(false)
enable_autoplay Boolean @default(true)
enable_skip_credits Boolean @default(true)
enable_discover Boolean @default(true)
enable_featured Boolean @default(false)
enable_details_modal Boolean @default(false)
enable_image_logos Boolean @default(true)
enable_carousel_view Boolean @default(false)
force_compact_episode_view Boolean @default(false)
source_order String[] @default([])
enable_source_order Boolean @default(false)
disabled_sources String[] @default([])
embed_order String[] @default([])
enable_embed_order Boolean @default(false)
disabled_embeds String[] @default([])
proxy_tmdb Boolean @default(false)
enable_low_performance_mode Boolean @default(false)
enable_native_subtitles Boolean @default(false)
enable_hold_to_boost Boolean @default(false)
home_section_order String[] @default([])
manual_source_selection Boolean @default(false)
enable_double_click_to_seek Boolean @default(false)
enable_auto_resume_on_playback_error Boolean @default(false)
}
model users {
id String @id
public_key String @unique(map: "users_public_key_unique")
namespace String @db.VarChar(255)
nickname String @db.VarChar(255)
created_at DateTime @db.Timestamptz(0)
last_logged_in DateTime? @db.Timestamptz(0)
permissions String[]
profile Json
ratings Json @default("[]")
}
model lists {
id String @id @default(uuid()) @db.Uuid
user_id String @db.VarChar(255)
name String @db.VarChar(255)
description String? @db.VarChar(255)
created_at DateTime @default(now()) @db.Timestamptz(0)
updated_at DateTime @updatedAt @db.Timestamptz(0)
public Boolean @default(false)
list_items list_items[]
@@index([user_id], map: "lists_user_id_index")
}
model list_items {
id String @id @default(uuid()) @db.Uuid
list_id String @db.Uuid
tmdb_id String @db.VarChar(255)
added_at DateTime @default(now()) @db.Timestamptz(0)
type String? @db.VarChar(255)
list lists @relation(fields: [list_id], references: [id])
@@unique([list_id, tmdb_id], map: "list_items_list_id_tmdb_id_unique")
}
model user_group_order {
id String @id @default(uuid()) @db.Uuid
user_id String @db.VarChar(255)
group_order String[] @default([])
created_at DateTime @default(now()) @db.Timestamptz(0)
updated_at DateTime @default(now()) @db.Timestamptz(0)
@@unique([user_id], map: "user_group_order_user_id_unique")
}
model watch_history {
id String @id @db.Uuid
user_id String @db.VarChar(255)
tmdb_id String @db.VarChar(255)
season_id String? @db.VarChar(255)
episode_id String? @db.VarChar(255)
meta Json
duration BigInt
watched BigInt
watched_at DateTime @db.Timestamptz(0)
completed Boolean @default(false)
season_number Int?
episode_number Int?
updated_at DateTime @default(now()) @updatedAt @db.Timestamptz(0)
@@unique([tmdb_id, user_id, season_id, episode_id], map: "watch_history_tmdb_id_user_id_season_id_episode_id_unique")
}