From 62e933448ca797cccf1eda699639b7cdd0ef11cd Mon Sep 17 00:00:00 2001 From: David Skrundz Date: Wed, 7 May 2025 20:22:05 -0600 Subject: [PATCH] Improve model --- Cargo.lock | 6 +++--- Cargo.toml | 4 ++-- crates/cli/Cargo.toml | 2 +- crates/cli/src/cli/tmdb.rs | 16 ++++++++-------- crates/cli/src/main.rs | 4 +++- crates/cli/src/run/tmdb.rs | 14 ++------------ crates/flix/Cargo.toml | 2 +- crates/flix/src/model/episode.rs | 2 ++ crates/flix/src/model/season.rs | 2 ++ crates/tmdb/Cargo.toml | 2 +- crates/tmdb/src/api/episodes.rs | 4 ++-- crates/tmdb/src/api/seasons.rs | 2 +- crates/tmdb/src/model/episode.rs | 2 +- crates/tmdb/src/model/id.rs | 2 +- crates/tmdb/src/model/season.rs | 2 +- crates/tmdb/src/model/show.rs | 2 +- 16 files changed, 32 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1a9f0f6..8d23d64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -214,7 +214,7 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "flix" -version = "0.0.3" +version = "0.0.4" dependencies = [ "chrono", "flix-tmdb", @@ -224,7 +224,7 @@ dependencies = [ [[package]] name = "flix-cli" -version = "0.0.3" +version = "0.0.4" dependencies = [ "anyhow", "clap", @@ -238,7 +238,7 @@ dependencies = [ [[package]] name = "flix-tmdb" -version = "0.0.3" +version = "0.0.4" dependencies = [ "chrono", "reqwest", diff --git a/Cargo.toml b/Cargo.toml index da3de64..67809ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,8 +34,8 @@ overflow-checks = true strip = "debuginfo" [workspace.dependencies] -flix = { path = "crates/flix", version = "=0.0.3", default-features = false } -flix-tmdb = { path = "crates/tmdb", version = "=0.0.3", default-features = false } +flix = { path = "crates/flix", version = "=0.0.4", default-features = false } +flix-tmdb = { path = "crates/tmdb", version = "=0.0.4", default-features = false } anyhow = { version = "^1", default-features = false } chrono = { version = "^0.4", default-features = false } diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 0e3e40a..e15efe0 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-cli" -version = "0.0.3" +version = "0.0.4" categories = ["command-line-utilities"] description = "CLI for interacting with flix media" diff --git a/crates/cli/src/cli/tmdb.rs b/crates/cli/src/cli/tmdb.rs index 8f8017f..9f2bfab 100644 --- a/crates/cli/src/cli/tmdb.rs +++ b/crates/cli/src/cli/tmdb.rs @@ -5,32 +5,32 @@ pub enum Command { /// Process a TMDB collection Collection { #[arg(value_name = "TMDB_ID")] - id: i32, + id: u32, }, /// Process a TMDB movie Movie { #[arg(value_name = "TMDB_ID")] - id: i32, + id: u32, }, /// Process a TMDB show Show { #[arg(value_name = "TMDB_ID")] - id: i32, + id: u32, }, /// Process a TMDB season Season { #[arg(value_name = "TMDB_ID")] - id: i32, + id: u32, #[arg(value_name = "SEASON_NUM")] - season: i32, + season: u32, }, /// Process a TMDB episode Episode { #[arg(value_name = "TMDB_ID")] - id: i32, + id: u32, #[arg(value_name = "SEASON_NUM")] - season: i32, + season: u32, #[arg(value_name = "EPISODE_NUM")] - episode: i32, + episode: u32, }, } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index ce3a877..ec2fe60 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -1,3 +1,5 @@ +use std::path::Path; + use flix_tmdb::Client; use anyhow::{Context, Result}; @@ -41,7 +43,7 @@ async fn main() -> Result<()> { let output = output .as_ref() .map(|p| p.as_path()) - .unwrap_or(object.default_filename()); + .unwrap_or(Path::new("flix.toml")); let mut file = if *force { fs::File::create(output).await diff --git a/crates/cli/src/run/tmdb.rs b/crates/cli/src/run/tmdb.rs index 8a45862..a03c510 100644 --- a/crates/cli/src/run/tmdb.rs +++ b/crates/cli/src/run/tmdb.rs @@ -1,5 +1,3 @@ -use std::path::Path; - use flix::model::{ Collection, Episode, GenericCollection, GenericEpisode, GenericMovie, GenericSeason, GenericShow, Movie, Season, Show, TmdbCollection, TmdbMovie, TmdbShow, @@ -23,16 +21,6 @@ pub enum TmdbObject { } impl TmdbObject { - pub fn default_filename(&self) -> &'static Path { - Path::new(match self { - TmdbObject::Collection(_) => "collection.toml", - TmdbObject::Movie(_) => "movie.toml", - TmdbObject::Show(_) => "show.toml", - TmdbObject::Season(_) => "season.toml", - TmdbObject::Episode(_) => "episode.toml", - }) - } - pub fn serialize(self) -> Result { Ok(match self { TmdbObject::Collection(tmdb) => toml::to_string(&Collection { @@ -68,6 +56,7 @@ impl TmdbObject { })?, TmdbObject::Season(tmdb) => toml::to_string(&Season { season: GenericSeason { + number: tmdb.season_number, name: tmdb.name, overview: tmdb.overview, air_date: tmdb.air_date, @@ -75,6 +64,7 @@ impl TmdbObject { })?, TmdbObject::Episode(tmdb) => toml::to_string(&Episode { episode: GenericEpisode { + number: tmdb.episode_number, name: tmdb.name, overview: tmdb.overview, air_date: tmdb.air_date, diff --git a/crates/flix/Cargo.toml b/crates/flix/Cargo.toml index 5224e5d..f551ff0 100644 --- a/crates/flix/Cargo.toml +++ b/crates/flix/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix" -version = "0.0.3" +version = "0.0.4" categories = [] description = "Types for storing persistent data about media" diff --git a/crates/flix/src/model/episode.rs b/crates/flix/src/model/episode.rs index 9423abd..e147beb 100644 --- a/crates/flix/src/model/episode.rs +++ b/crates/flix/src/model/episode.rs @@ -10,6 +10,8 @@ pub struct Episode { /// The generic episode data #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GenericEpisode { + /// The episode's number + pub number: u32, /// The episode's name pub name: String, /// The episode's overview diff --git a/crates/flix/src/model/season.rs b/crates/flix/src/model/season.rs index aacec5a..7349ccf 100644 --- a/crates/flix/src/model/season.rs +++ b/crates/flix/src/model/season.rs @@ -10,6 +10,8 @@ pub struct Season { /// The generic season data #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct GenericSeason { + /// The season's number + pub number: u32, /// The season's name pub name: String, /// The season's overview diff --git a/crates/tmdb/Cargo.toml b/crates/tmdb/Cargo.toml index 63a5353..0f7e519 100644 --- a/crates/tmdb/Cargo.toml +++ b/crates/tmdb/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-tmdb" -version = "0.0.3" +version = "0.0.4" categories = [] description = "Clients and models for fetching data from TMDB" diff --git a/crates/tmdb/src/api/episodes.rs b/crates/tmdb/src/api/episodes.rs index 9cc91b6..1738808 100644 --- a/crates/tmdb/src/api/episodes.rs +++ b/crates/tmdb/src/api/episodes.rs @@ -22,8 +22,8 @@ impl Client { pub async fn get_details( &self, id: impl Into, - season: impl Into, - episode: impl Into, + season: impl Into, + episode: impl Into, language: Option<&str>, ) -> Result { Ok(self diff --git a/crates/tmdb/src/api/seasons.rs b/crates/tmdb/src/api/seasons.rs index 9fc48fb..8f5f058 100644 --- a/crates/tmdb/src/api/seasons.rs +++ b/crates/tmdb/src/api/seasons.rs @@ -22,7 +22,7 @@ impl Client { pub async fn get_details( &self, id: impl Into, - season: impl Into, + season: impl Into, language: Option<&str>, ) -> Result { Ok(self diff --git a/crates/tmdb/src/model/episode.rs b/crates/tmdb/src/model/episode.rs index d7b3d9f..a15ab5f 100644 --- a/crates/tmdb/src/model/episode.rs +++ b/crates/tmdb/src/model/episode.rs @@ -4,7 +4,7 @@ use chrono::NaiveDate; #[derive(Debug, Clone, serde::Deserialize)] pub struct Episode { /// The episode's number - pub episode_number: i32, + pub episode_number: u32, /// The episode's name pub name: String, /// The episode's overview diff --git a/crates/tmdb/src/model/id.rs b/crates/tmdb/src/model/id.rs index b26b0b1..29a8ee0 100644 --- a/crates/tmdb/src/model/id.rs +++ b/crates/tmdb/src/model/id.rs @@ -19,7 +19,7 @@ pub enum Movie {} pub enum Show {} /// The inner type of TmdbId -pub type Inner = i32; +pub type Inner = u32; /// Wraps an ID from TMDB, the generic parameter is to enforce that /// IDs for different types of media are not interchangeable diff --git a/crates/tmdb/src/model/season.rs b/crates/tmdb/src/model/season.rs index 7d4583e..a5f6ee7 100644 --- a/crates/tmdb/src/model/season.rs +++ b/crates/tmdb/src/model/season.rs @@ -6,7 +6,7 @@ use super::Episode; #[derive(Debug, Clone, serde::Deserialize)] pub struct Season { /// The season's number - pub season_number: i32, + pub season_number: u32, /// The season's name pub name: String, /// The season's overview diff --git a/crates/tmdb/src/model/show.rs b/crates/tmdb/src/model/show.rs index a6ab599..57ebd3d 100644 --- a/crates/tmdb/src/model/show.rs +++ b/crates/tmdb/src/model/show.rs @@ -18,7 +18,7 @@ pub struct Show { /// The show's last air date pub last_air_date: NaiveDate, /// The number of seasons in this show - pub number_of_seasons: i32, + pub number_of_seasons: u32, /// The show's status pub status: ShowStatus, }