Files
movies-diary/crates/domain/src/models/mod.rs
Gabriel Kaszewski 0eb56c2be6
Some checks failed
CI / Check / Test (push) Has been cancelled
fmt
2026-07-10 05:45:44 +02:00

105 lines
2.3 KiB
Rust

mod enrichment;
mod federation;
mod feed;
mod movie;
mod refresh_session;
mod review;
mod stats;
mod user;
pub mod collections;
pub mod goal;
pub mod import;
pub mod import_profile;
pub mod import_session;
pub mod person;
pub mod remote_goal;
pub mod remote_watchlist;
pub mod search;
pub mod user_settings;
pub mod watch_event;
pub mod watchlist;
pub mod wrapup;
pub use enrichment::*;
pub use federation::*;
pub use feed::*;
pub use movie::*;
pub use review::*;
pub use stats::*;
pub use user::*;
pub use goal::{Goal, GoalWithProgress};
pub use remote_goal::RemoteGoalEntry;
pub use remote_watchlist::RemoteWatchlistEntry;
pub use user_settings::UserSettings;
pub use watch_event::{
ParsedPlaybackEvent, PersistedWatchEvent, WatchEvent, WatchEventSource, WatchEventStatus,
WebhookToken,
};
pub use watchlist::{WatchlistEntry, WatchlistWithMovie};
pub use wrapup::*;
pub use crate::value_objects::PersonId;
pub use import::{
AnnotatedRow, DomainField, FieldMapping, FileFormat, ImportError, ImportRow, ParsedFile,
RowResult, Transform,
};
pub use import_profile::ImportProfile;
pub use import_session::ImportSession;
pub use person::{
CastCredit, CrewCredit, ExternalPersonId, Person, PersonCredits, PersonEnrichmentData,
};
pub use refresh_session::{GeneratedToken, RefreshSession};
pub use search::{
EntityType, IndexableDocument, MovieSearchHit, PersonSearchHit, SearchFilters, SearchQuery,
SearchResults,
};
use crate::errors::DomainError;
#[derive(Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum GoalType {
Movies,
}
impl GoalType {
pub fn as_str(&self) -> &'static str {
match self {
Self::Movies => "movies",
}
}
}
impl std::str::FromStr for GoalType {
type Err = DomainError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"movies" => Ok(Self::Movies),
other => Err(DomainError::ValidationError(format!(
"Unknown goal type: {other}"
))),
}
}
}
#[derive(Clone, Debug, Default)]
pub enum ReviewSortBy {
#[default]
Descending,
Ascending,
ByRatingDesc,
ByRatingAsc,
}
pub enum ExportFormat {
Csv,
Json,
}
#[cfg(test)]
#[path = "tests/mod.rs"]
mod tests;