flix_db/entity/content/
episodes.rs1use flix_model::id::{LibraryId, ShowId};
4
5use seamantic::model::path::PathBytes;
6
7use flix_model::numbers::{EpisodeNumber, SeasonNumber};
8use sea_orm::{
9 ActiveModelBehavior, DeriveEntityModel, DerivePrimaryKey, DeriveRelation, EntityTrait,
10 EnumIter, PrimaryKeyTrait, Related, RelationDef, RelationTrait,
11};
12
13#[derive(Debug, Clone, DeriveEntityModel)]
15#[sea_orm(table_name = "flix_episodes")]
16pub struct Model {
17 #[sea_orm(primary_key, auto_increment = false)]
19 pub show: ShowId,
20 #[sea_orm(primary_key, auto_increment = false)]
22 pub season: SeasonNumber,
23 #[sea_orm(primary_key, auto_increment = false)]
25 pub episode: EpisodeNumber,
26 pub slug: String,
28 pub library: LibraryId,
30 pub directory: PathBytes,
32 pub relative_media_path: PathBytes,
34 pub relative_poster_path: Option<PathBytes>,
36}
37
38impl ActiveModelBehavior for ActiveModel {}
39
40#[derive(Debug, EnumIter, DeriveRelation)]
42pub enum Relation {
43 #[sea_orm(
45 belongs_to = "super::libraries::Entity",
46 from = "Column::Library",
47 to = "super::libraries::Column::Id",
48 on_update = "Cascade",
49 on_delete = "Cascade"
50 )]
51 Library,
52}
53
54impl Related<super::libraries::Entity> for Entity {
55 fn to() -> RelationDef {
56 Relation::Library.def()
57 }
58}