use serde::{Deserialize, Serialize}; use oneclient_common::domain::GameLoader; use oneclient_common::patch::Patch; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct CreateClusterOptions { pub name: String, pub mc_version: String, pub mc_loader: GameLoader, pub mc_loader_version: Option, pub mem_max: Option, } impl CreateClusterOptions { pub fn new( name: impl Into, mc_version: impl Into, mc_loader: GameLoader, ) -> Self { Self { name: name.into(), mc_version: mc_version.into(), mc_loader, mc_loader_version: None, mem_max: None, } } pub fn mem_max(mut self, megabytes: u32) -> Self { self.mem_max = Some(megabytes); self } pub fn loader_version(mut self, version: impl Into) -> Self { self.mc_loader_version = Some(version.into()); self } } #[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ClusterUpdate { pub name: Option, pub setting_profile_name: Patch, pub mc_loader_version: Patch, pub linked_modpack_hash: Patch, } impl ClusterUpdate { pub fn setting_profile(mut self, name: impl Into) -> Self { self.setting_profile_name = Patch::Set(name.into()); self } pub fn loader_version(mut self, version: impl Into) -> Self { self.mc_loader_version = Patch::Set(version.into()); self } }