connect4_coms/
types.rs

1use connect4_lib::game::ChipDescrip;
2use connect4_lib::game::{BoardState, Game, Player};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct Signin {
7    pub status: String,
8    pub tok: String,
9}
10#[derive(Debug, Serialize, Deserialize)]
11pub struct Refresh {
12    pub status: String,
13    pub new_tok: String,
14}
15#[derive(Debug, Serialize, Deserialize)]
16pub struct PlayMove {
17    pub status: String,
18    pub game_id: String,
19    pub column: isize,
20    pub chip_descrip: ChipDescrip,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub struct GameData {
25    pub roomcode: String,
26    pub board_state: BoardState,
27    pub users: Vec<String>,
28
29    #[serde(flatten)]
30    pub game: Game,
31}
32
33#[derive(Debug, Serialize, Deserialize)]
34pub struct GameDataResponse {
35    pub status: String,
36    pub game_data: Option<GameData>,
37}
38
39#[derive(Debug, Serialize, Deserialize)]
40pub enum ClaimPayload {
41    username(String),
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct Claims {
46    pub data: ClaimPayload, // extra data fields
47    pub exp: usize,
48}
49
50#[derive(Debug, Serialize, Deserialize)]
51pub struct GameStats {
52    pub game_id: String,
53    pub player: String,
54    pub games_won: isize,
55    pub games_lost: isize,
56    pub games_played: isize,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct GameStatsResponse {
61    pub status: String,
62    pub game_stats: Option<GameStats>,
63}
64
65#[derive(Debug, Serialize, Deserialize)]
66pub struct JoinPlayers {
67    pub players: Vec<i32>,
68}
69
70#[derive(Debug, Serialize, Deserialize)]
71pub struct JoinPlayersResponse {
72    pub status: String,
73    pub player_numbers: Vec<Option<isize>>,
74}