use bili_sync_entity::rule::Rule; use serde::{Deserialize, Serialize}; use validator::Validate; use crate::bilibili::CollectionType; #[derive(Deserialize)] pub struct VideosRequest { pub collection: Option, pub favorite: Option, pub submission: Option, pub watch_later: Option, pub query: Option, #[serde(default)] pub failed_only: bool, pub page: Option, pub page_size: Option, } #[derive(Deserialize)] pub struct ResetVideoStatusRequest { #[serde(default)] pub force: bool, } #[derive(Deserialize)] pub struct ResetFilteredVideoStatusRequest { pub collection: Option, pub favorite: Option, pub submission: Option, pub watch_later: Option, pub query: Option, #[serde(default)] pub failed_only: bool, #[serde(default)] pub force: bool, } #[derive(Deserialize, Validate)] pub struct StatusUpdate { #[validate(range(min = 0, max = 4))] pub status_index: usize, #[validate(custom(function = "crate::utils::validation::validate_status_value"))] pub status_value: u32, } #[derive(Deserialize, Validate)] pub struct PageStatusUpdate { pub page_id: i32, #[validate(nested)] pub updates: Vec, } #[derive(Deserialize, Validate)] pub struct UpdateVideoStatusRequest { #[serde(default)] #[validate(nested)] pub video_updates: Vec, #[serde(default)] #[validate(nested)] pub page_updates: Vec, } #[derive(Deserialize, Validate)] pub struct UpdateFilteredVideoStatusRequest { pub collection: Option, pub favorite: Option, pub submission: Option, pub watch_later: Option, pub query: Option, #[serde(default)] pub failed_only: bool, #[serde(default)] #[validate(nested)] pub video_updates: Vec, #[serde(default)] #[validate(nested)] pub page_updates: Vec, } #[derive(Deserialize)] pub struct FollowedCollectionsRequest { pub page_num: Option, pub page_size: Option, } #[derive(Deserialize)] pub struct FollowedUppersRequest { pub page_num: Option, pub page_size: Option, pub name: Option, } #[derive(Deserialize, Validate)] pub struct InsertFavoriteRequest { pub fid: i64, #[validate(custom(function = "crate::utils::validation::validate_path"))] pub path: String, } #[derive(Deserialize, Validate)] pub struct InsertCollectionRequest { pub sid: i64, pub mid: i64, #[serde(default)] pub collection_type: CollectionType, #[validate(custom(function = "crate::utils::validation::validate_path"))] pub path: String, } #[derive(Deserialize, Validate)] pub struct InsertSubmissionRequest { pub upper_id: i64, #[validate(custom(function = "crate::utils::validation::validate_path"))] pub path: String, } #[derive(Deserialize, Validate)] #[serde(rename_all = "camelCase")] pub struct UpdateVideoSourceRequest { #[validate(custom(function = "crate::utils::validation::validate_path"))] pub path: String, pub enabled: bool, pub rule: Option, pub use_dynamic_api: Option, } #[derive(Serialize, Deserialize)] pub struct DefaultPathRequest { pub name: String, } #[derive(Debug, Deserialize)] pub struct PollQrcodeRequest { pub qrcode_key: String, }