use std::{collections::HashMap}; use serde::{Serialize, Deserialize}; use utoipa::{ToSchema, IntoParams}; #[derive(Serialize, Deserialize, ToSchema, Debug)] pub struct AuthReturn { #[schema(example = false)] pub moderator: bool, #[schema(example = false)] pub admin: bool, } // Game Structs #[derive(Serialize, Deserialize, ToSchema, Debug, IntoParams)] pub struct GetGameParam { #[schema(example = 0)] pub game_id: i32, } #[derive(Serialize, Deserialize, ToSchema, Debug)] pub struct PostGameParams { #[schema(example = "Game XY")] pub game_name: String, } #[derive(Serialize, Deserialize, ToSchema, Debug)] pub struct UpdateGameParams { #[schema(example = 0)] pub game_id: i32, #[schema(example = "Game XY")] pub game_name: String, } #[derive(Serialize, Deserialize, ToSchema, Debug, IntoParams)] pub struct DeleteGameParam { #[schema(example = 0)] pub game_id: i32, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct FullViewData { pub games: HashMap<i32, ChellarisGameLegacy>, pub ethics: HashMap<i32, Ethic>, pub species: HashMap<i32, Species>, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisGameLegacy { pub id: i32, pub name: String, pub groups: HashMap<i32, ChellarisGameGroupLegacy>, pub empires: HashMap<i32, ChellarisEmpire>, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisGameFlat { pub id: i32, pub name: String, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisGame { pub id: i32, pub name: String, pub empires: HashMap<i32, ChellarisEmpireFlat>, pub groups: HashMap<i32, ChellarisGroupFlat> } // Group Structs #[derive(Serialize, Deserialize, ToSchema, Debug)] pub struct PostGroupParams { #[schema(example = "Group XY")] pub group_name: String, #[schema(example = 0)] pub game_id: i32 } #[derive(Serialize, Deserialize, ToSchema, Debug)] pub struct UpdateGroupParams { #[schema(example = 0)] pub group_id: i32, #[schema(example = 0)] pub game_id: i32, #[schema(example = "Group XY")] pub group_name: String } #[derive(Serialize, Deserialize, ToSchema, Debug, IntoParams)] pub struct DeleteGroupParams { #[schema(example = 0)] pub group_id: i32, #[schema(example = 0)] pub game_id: i32, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisGroupFlat { pub id: i32, pub name: String, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisGameGroupLegacy { pub id: i32, pub name: String, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisEmpireFlat { pub id: i32, pub group: i32, pub name: String, pub discord_user: Option<String>, pub gestalt: bool, pub empire_portrait: Option<i32>, pub empire_portrait_group: Option<i32>, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct ChellarisEmpire { pub id: i32, pub gestalt: bool, pub machine: bool, pub group: i32, pub empire_portrait: Option<i32>, pub empire_portrait_group: Option<i32>, pub discord_user: Option<String>, pub ethics: HashMap<i32, EmpireEthic>, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct Ethic { pub id: i32, pub displayName: String, pub machine: bool, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct EmpireEthic { pub id: i32, pub displayName: String, pub machine: bool, pub fanatic: bool, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct Species { pub id: i32, pub displayName: String, pub portraits: HashMap<i32, Portrait>, } #[derive(Serialize, ToSchema, Debug, Clone)] pub struct Portrait { pub id: i32, pub hires: String, pub lores: Option<String>, }