From 91f6897b6894e5c87b61f7e29a8811d815d498c0 Mon Sep 17 00:00:00 2001 From: Timm Ortloff Date: Mon, 21 Jul 2025 08:04:12 +0200 Subject: [PATCH] Add `Region` enum --- javascript/lib/types/CreateInstanceRequest.ts | 2 ++ javascript/lib/types/Node.ts | 2 ++ javascript/lib/types/Region.ts | 3 +++ rust/src/lib.rs | 4 ++++ rust/src/types/mod.rs | 1 + rust/src/types/node.rs | 3 +++ rust/src/types/region.rs | 13 +++++++++++++ 7 files changed, 28 insertions(+) create mode 100644 javascript/lib/types/Region.ts create mode 100644 rust/src/types/region.rs diff --git a/javascript/lib/types/CreateInstanceRequest.ts b/javascript/lib/types/CreateInstanceRequest.ts index 8a86572..5c5adfa 100644 --- a/javascript/lib/types/CreateInstanceRequest.ts +++ b/javascript/lib/types/CreateInstanceRequest.ts @@ -1,9 +1,11 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { DcsSettingsPayload } from "./DcsSettingsPayload"; +import type { Region } from "./Region"; import type { Terrain } from "./Terrain"; export type CreateInstanceRequest = { product_id: string; + region: Region; settings: DcsSettingsPayload; active_mods: Array; wanted_terrains: Array; diff --git a/javascript/lib/types/Node.ts b/javascript/lib/types/Node.ts index f7d678e..6e6df31 100644 --- a/javascript/lib/types/Node.ts +++ b/javascript/lib/types/Node.ts @@ -1,8 +1,10 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { Region } from "./Region"; export type Node = { id: string; name: string; + region: Region; ip: string; port: number; max_cpu: number; diff --git a/javascript/lib/types/Region.ts b/javascript/lib/types/Region.ts new file mode 100644 index 0000000..8a02bc7 --- /dev/null +++ b/javascript/lib/types/Region.ts @@ -0,0 +1,3 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. + +export type Region = "de" | "us" | "invalid"; diff --git a/rust/src/lib.rs b/rust/src/lib.rs index e9f8d82..6bbc066 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1,6 +1,7 @@ use anyhow::{bail, Ok, Result}; use serde::Serialize; pub use types::instance::{Instance, InstanceStatus, Terrain}; +pub use types::region::Region; use types::{dcs_runtime::DcsRuntime, system_resources::ServerResources}; use uuid::Uuid; @@ -11,6 +12,7 @@ mod types; #[cfg_attr(test, ts(export, export_to = "../../javascript/lib/types/"))] pub struct CreateInstanceRequest { pub product_id: Uuid, + pub region: Region, pub settings: DcsSettingsPayload, pub active_mods: Vec, pub wanted_terrains: Vec, @@ -51,6 +53,7 @@ impl Client { pub async fn create_server( &self, + region: Region, name: impl Into, password: Option>, max_players: u32, @@ -64,6 +67,7 @@ impl Client { ) -> Result { let payload = CreateInstanceRequest { product_id: plan, + region, settings: DcsSettingsPayload { initial_server_name: name.into(), initial_server_password: password.map(|p| p.into()).unwrap_or_default(), diff --git a/rust/src/types/mod.rs b/rust/src/types/mod.rs index 85707d2..338bc40 100644 --- a/rust/src/types/mod.rs +++ b/rust/src/types/mod.rs @@ -6,6 +6,7 @@ pub mod dcs_runtime; pub mod dcs_settings; pub mod instance; pub mod node; +pub mod region; pub mod system_resources; fn deserialize_array_object<'de, D, T>(deserializer: D) -> Result, D::Error> diff --git a/rust/src/types/node.rs b/rust/src/types/node.rs index 1f143cb..c015497 100644 --- a/rust/src/types/node.rs +++ b/rust/src/types/node.rs @@ -1,12 +1,15 @@ use serde::Deserialize; use uuid::Uuid; +use crate::types::region::Region; + #[derive(Debug, Deserialize, Clone)] #[cfg_attr(test, derive(ts_rs::TS))] #[cfg_attr(test, ts(export, export_to = "../../javascript/lib/types/"))] pub struct Node { pub id: Uuid, pub name: String, + pub region: Region, pub ip: String, pub port: u32, pub max_cpu: u32, diff --git a/rust/src/types/region.rs b/rust/src/types/region.rs new file mode 100644 index 0000000..0443964 --- /dev/null +++ b/rust/src/types/region.rs @@ -0,0 +1,13 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq, Hash)] +#[cfg_attr(test, derive(ts_rs::TS))] +#[cfg_attr(test, ts(export, export_to = "../../javascript/lib/types/"))] +pub enum Region { + #[serde(rename = "de")] + Germany, + #[serde(rename = "us")] + USA, + #[serde(rename = "invalid")] + Invalid, +}