Files
flix/crates/db/src/migration/m_000002/episodes.rs
T

95 lines
2.7 KiB
Rust

use sea_orm::sea_query;
use sea_orm::sea_query::{ForeignKeyCreateStatement, Index, Table};
use sea_orm::{DbErr, Iden};
use sea_orm_migration::SchemaManager;
use sea_orm_migration::schema::{date, integer};
use super::super::m_000001::{FlixInfoEpisodes, FlixInfoSeasons};
use super::FlixTmdbSeasons;
#[derive(Iden)]
pub enum FlixTmdbEpisodes {
Table,
TmdbShow,
TmdbSeason,
TmdbEpisode,
FlixShow,
FlixSeason,
FlixEpisode,
LastUpdate,
Runtime,
}
pub async fn up(manager: &SchemaManager<'_>) -> Result<(), DbErr> {
manager
.create_table(
Table::create()
.table(FlixTmdbEpisodes::Table)
.col(integer(FlixTmdbEpisodes::TmdbShow))
.col(integer(FlixTmdbEpisodes::TmdbSeason))
.col(integer(FlixTmdbEpisodes::TmdbEpisode))
.col(integer(FlixTmdbEpisodes::FlixShow))
.col(integer(FlixTmdbEpisodes::FlixSeason))
.col(integer(FlixTmdbEpisodes::FlixEpisode))
.col(date(FlixTmdbEpisodes::LastUpdate))
.col(integer(FlixTmdbEpisodes::Runtime))
.primary_key(
Index::create()
.col(FlixTmdbEpisodes::TmdbShow)
.col(FlixTmdbEpisodes::TmdbSeason)
.col(FlixTmdbEpisodes::TmdbEpisode),
)
.foreign_key(
ForeignKeyCreateStatement::new()
.name("fk-flix_tmdb_episodes-tmdb_show_season")
.from_tbl(FlixTmdbEpisodes::Table)
.from_col(FlixTmdbEpisodes::TmdbShow)
.from_col(FlixTmdbEpisodes::TmdbSeason)
.to_tbl(FlixTmdbSeasons::Table)
.to_col(FlixTmdbSeasons::TmdbShow)
.to_col(FlixTmdbSeasons::TmdbSeason),
)
.foreign_key(
ForeignKeyCreateStatement::new()
.name("fk-flix_tmdb_episodes-flix_show_season")
.from_tbl(FlixTmdbEpisodes::Table)
.from_col(FlixTmdbEpisodes::FlixShow)
.from_col(FlixTmdbEpisodes::FlixSeason)
.to_tbl(FlixInfoSeasons::Table)
.to_col(FlixInfoSeasons::Show)
.to_col(FlixInfoSeasons::Season),
)
.foreign_key(
ForeignKeyCreateStatement::new()
.name("fk-flix_tmdb_episodes-flix_show_season_episode")
.from_tbl(FlixTmdbEpisodes::Table)
.from_col(FlixTmdbEpisodes::FlixShow)
.from_col(FlixTmdbEpisodes::FlixSeason)
.from_col(FlixTmdbEpisodes::FlixEpisode)
.to_tbl(FlixInfoEpisodes::Table)
.to_col(FlixInfoEpisodes::Show)
.to_col(FlixInfoEpisodes::Season)
.to_col(FlixInfoEpisodes::Episode),
)
.index(
Index::create()
.unique()
.name("idx-flix_tmdb_episodes-flix_show_season_episode")
.col(FlixTmdbEpisodes::FlixShow)
.col(FlixTmdbEpisodes::FlixSeason)
.col(FlixTmdbEpisodes::FlixEpisode),
)
.to_owned(),
)
.await?;
Ok(())
}
pub async fn down(manager: &SchemaManager<'_>) -> Result<(), DbErr> {
manager
.drop_table(Table::drop().table(FlixTmdbEpisodes::Table).to_owned())
.await
}