2023-09-02 20:23:34 +02:00
use std ::{ collections ::HashMap } ;
2023-08-26 06:36:12 +02:00
use serde ::{ Serialize , Deserialize } ;
use utoipa ::{ ToSchema , IntoParams } ;
2023-08-30 04:16:43 +02:00
#[ derive(Serialize, Deserialize, ToSchema, Debug) ]
pub struct AuthReturn {
#[ schema(example = false) ]
pub moderator : bool ,
#[ schema(example = false) ]
pub admin : bool ,
}
2023-09-02 20:23:34 +02:00
// Game Structs
2023-08-30 04:16:43 +02:00
#[ derive(Serialize, Deserialize, ToSchema, Debug, IntoParams) ]
pub struct GetGameParam {
2023-09-02 20:23:34 +02:00
#[ schema(example = 0) ]
pub game_id : i32 ,
2023-08-30 04:16:43 +02:00
}
#[ derive(Serialize, Deserialize, ToSchema, Debug) ]
pub struct PostGameParams {
2023-09-02 20:23:34 +02:00
#[ schema(example = " Game XY " ) ]
pub game_name : String ,
}
#[ derive(Serialize, Deserialize, ToSchema, Debug) ]
pub struct UpdateGameParams {
#[ schema(example = 0) ]
pub game_id : i32 ,
2023-08-30 04:16:43 +02:00
#[ schema(example = " Game XY " ) ]
pub game_name : String ,
}
#[ derive(Serialize, Deserialize, ToSchema, Debug, IntoParams) ]
pub struct DeleteGameParam {
#[ schema(example = 0) ]
2023-09-02 20:23:34 +02:00
pub game_id : i32 ,
2023-08-30 04:16:43 +02:00
}
2023-08-26 06:36:12 +02:00
#[ derive(Serialize, ToSchema, Debug, Clone) ]
pub struct FullViewData {
2023-09-02 20:23:34 +02:00
pub games : HashMap < i32 , ChellarisGameLegacy > ,
2023-08-26 06:36:12 +02:00
pub ethics : HashMap < i32 , Ethic > ,
pub species : HashMap < i32 , Species > ,
}
#[ derive(Serialize, ToSchema, Debug, Clone) ]
2023-09-02 20:23:34 +02:00
pub struct ChellarisGameLegacy {
2023-08-26 06:36:12 +02:00
pub id : i32 ,
pub name : String ,
2023-09-02 20:23:34 +02:00
pub groups : HashMap < i32 , ChellarisGameGroupLegacy > ,
2023-08-26 06:36:12 +02:00
pub empires : HashMap < i32 , ChellarisEmpire > ,
}
2023-08-30 04:16:43 +02:00
#[ derive(Serialize, ToSchema, Debug, Clone) ]
2023-09-02 20:23:34 +02:00
pub struct ChellarisGameFlat {
2023-08-30 04:16:43 +02:00
pub id : i32 ,
pub name : String ,
}
2023-08-26 06:36:12 +02:00
#[ derive(Serialize, ToSchema, Debug, Clone) ]
2023-09-02 20:23:34 +02:00
pub struct ChellarisGame {
2023-08-26 06:36:12 +02:00
pub id : i32 ,
pub name : String ,
2023-09-02 20:23:34 +02:00
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 > ,
2023-08-26 06:36:12 +02:00
}
#[ derive(Serialize, ToSchema, Debug, Clone) ]
pub struct ChellarisEmpire {
pub id : i32 ,
pub gestalt : bool ,
pub machine : bool ,
pub group : i32 ,
2023-09-02 20:23:34 +02:00
pub empire_portrait : Option < i32 > ,
pub empire_portrait_group : Option < i32 > ,
2023-08-26 06:36:12 +02:00
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 > ,
2023-08-30 04:16:43 +02:00
}