72 lines
1.8 KiB
Rust
72 lines
1.8 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
/// SBC definition from data/sbcs/*.json
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct SbcDefinition {
|
|
pub id: String,
|
|
pub name: String,
|
|
pub description: String,
|
|
pub requirements: SbcRequirements,
|
|
pub reward: SbcReward,
|
|
pub expires_at: Option<String>,
|
|
pub repeatable: bool,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct SbcRequirements {
|
|
pub squad_size: u8,
|
|
pub min_overall: Option<u8>,
|
|
pub max_overall: Option<u8>,
|
|
pub min_chemistry: Option<u8>,
|
|
pub required_leagues: Vec<String>,
|
|
pub required_nations: Vec<String>,
|
|
pub required_clubs: Vec<String>,
|
|
pub min_players_from_same_league: Option<u8>,
|
|
pub min_players_from_same_nation: Option<u8>,
|
|
pub min_players_from_same_club: Option<u8>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct SbcReward {
|
|
pub coins: i64,
|
|
pub xp: i64,
|
|
pub pack_id: Option<String>,
|
|
}
|
|
|
|
/// DB record of a completed submission.
|
|
#[derive(Debug, Clone, Serialize, Deserialize, sqlx::FromRow)]
|
|
pub struct SbcSubmission {
|
|
pub id: String,
|
|
pub profile_id: String,
|
|
pub club_id: Option<String>,
|
|
pub sbc_id: String,
|
|
pub submitted_card_ids: String,
|
|
pub passed: bool,
|
|
pub submitted_at: String,
|
|
pub repeatable: bool,
|
|
}
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct SubmitSbcRequest {
|
|
pub sbc_id: String,
|
|
pub owned_card_ids: Vec<String>,
|
|
}
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct SaveSbcSquadRequest {
|
|
pub owned_card_ids: Vec<String>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct SbcSquadState {
|
|
pub sbc_id: String,
|
|
pub owned_card_ids: Vec<String>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize)]
|
|
pub struct SbcResult {
|
|
pub passed: bool,
|
|
pub failures: Vec<String>,
|
|
pub reward: Option<SbcReward>,
|
|
}
|