246 lines
6 KiB
Rust
246 lines
6 KiB
Rust
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 = 1)]
|
|
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 = 1)]
|
|
pub game_id: i32,
|
|
#[schema(example = "Game XY")]
|
|
pub game_name: String,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug, IntoParams)]
|
|
pub struct DeleteGameParam {
|
|
#[schema(example = 1)]
|
|
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, ChellarisEmpireLegacy>,
|
|
}
|
|
|
|
#[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 = 1)]
|
|
pub game_id: i32
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug)]
|
|
pub struct UpdateGroupParams {
|
|
#[schema(example = 1)]
|
|
pub group_id: i32,
|
|
#[schema(example = 1)]
|
|
pub game_id: i32,
|
|
#[schema(example = "Group XY")]
|
|
pub group_name: String
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug, IntoParams)]
|
|
pub struct DeleteGroupParams {
|
|
#[schema(example = 1)]
|
|
pub group_id: i32,
|
|
#[schema(example = 1)]
|
|
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,
|
|
}
|
|
|
|
// Empire Structs
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug)]
|
|
pub struct PostEmpireParams {
|
|
#[schema(example = 1)]
|
|
pub game_id: i32,
|
|
#[schema(example = 1)]
|
|
pub group_id: i32,
|
|
#[schema(example = "Example Empire")]
|
|
pub empire_name: String,
|
|
#[schema(example = true)]
|
|
pub gestalt: bool,
|
|
#[schema(example = 1)]
|
|
pub portrait_id: i32,
|
|
#[schema(example = 1)]
|
|
pub portrait_group_id: i32,
|
|
#[schema(example = json!([
|
|
{ "ethic_id": 1, "fanatic": false },
|
|
{ "ethic_id": 2, "fanatic": true },
|
|
{ "ethic_id": 3, "fanatic": false },
|
|
]))]
|
|
pub ethics: Vec<EmpireEthic>,
|
|
#[schema(example = "UsernameExample")]
|
|
pub discord_user: Option<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug)]
|
|
pub struct UpdateEmpireParams {
|
|
#[schema(example = 1)]
|
|
pub empire_id: i32,
|
|
#[schema(example = 1)]
|
|
pub game_id: Option<i32>,
|
|
#[schema(example = 1)]
|
|
pub group_id: Option<i32>,
|
|
#[schema(example = "Example Empire")]
|
|
pub empire_name: Option<String>,
|
|
#[schema(example = true)]
|
|
pub gestalt: Option<bool>,
|
|
#[schema(example = 1)]
|
|
pub portrait_id: Option<i32>,
|
|
#[schema(example = 1)]
|
|
pub portrait_group_id: Option<i32>,
|
|
#[schema(example = json!([
|
|
{ "ethic_id": 1, "fanatic": false },
|
|
{ "ethic_id": 2, "fanatic": true },
|
|
{ "ethic_id": 3, "fanatic": false },
|
|
]))]
|
|
pub ethics: Option<Vec<EmpireEthic>>,
|
|
#[schema(example = "UsernameExample")]
|
|
pub discord_user: Option<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug, IntoParams)]
|
|
pub struct DeleteEmpireParams {
|
|
#[schema(example = 1)]
|
|
pub game_id: i32,
|
|
#[schema(example = 1)]
|
|
pub group_id: i32,
|
|
#[schema(example = 1)]
|
|
pub empire_id: i32,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct ChellarisEmpireFlat {
|
|
pub id: i32,
|
|
pub group: i32,
|
|
pub game: i32,
|
|
pub name: String,
|
|
pub discord_user: Option<String>,
|
|
pub gestalt: bool,
|
|
pub portrait_id: i32,
|
|
pub portrait_group_id: i32,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct ChellarisEmpire {
|
|
pub id: i32,
|
|
pub group: i32,
|
|
pub game: i32,
|
|
pub name: String,
|
|
pub discord_user: Option<String>,
|
|
pub gestalt: bool,
|
|
pub portrait_id: i32,
|
|
pub portrait_group_id: i32,
|
|
pub ethics: HashMap<i32, EmpireEthic>,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct ChellarisEmpireLegacy {
|
|
pub id: i32,
|
|
pub group: i32,
|
|
pub gestalt: bool,
|
|
pub machine: bool,
|
|
pub empire_portrait: i32,
|
|
pub empire_portrait_group: i32,
|
|
pub discord_user: Option<String>,
|
|
pub ethics: HashMap<i32, EmpireEthicLegacy>,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct Ethic {
|
|
pub id: i32,
|
|
pub display: String,
|
|
pub machine: bool,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, ToSchema, Debug, Clone)]
|
|
pub struct EmpireEthic {
|
|
#[schema(example = "1")]
|
|
pub ethic_id: i32,
|
|
#[schema(example = "true")]
|
|
pub fanatic: bool,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct EmpireEthicLegacy {
|
|
pub id: i32,
|
|
pub display: String,
|
|
pub machine: bool,
|
|
pub fanatic: bool,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct Species {
|
|
pub id: i32,
|
|
pub display: String,
|
|
pub portraits: HashMap<i32, Portrait>,
|
|
}
|
|
|
|
#[derive(Serialize, ToSchema, Debug, Clone)]
|
|
pub struct Portrait {
|
|
pub id: i32,
|
|
pub hires: String,
|
|
pub lores: Option<String>,
|
|
}
|
|
|