use crate::shared;
use serde::Deserialize;
use chrono::{DateTime, Utc};
use crate::shared::Loan;
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct MyIpAddress {
pub ip: String,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct GameStatus {
pub status: String,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct UserInfoData {
pub username: String,
pub credits: i32,
#[serde(rename = "shipCount")]
pub ship_count: i32,
#[serde(rename = "structureCount")]
pub structure_count: i32,
#[serde(rename = "joinedAt")]
pub joined_at: DateTime<Utc>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct UserInfo {
pub user: UserInfoData,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct AvailableLoan {
#[serde(rename = "type")]
pub loan_type: shared::LoanType,
pub amount: i32,
pub rate: f64,
#[serde(rename = "termInDays")]
pub term_in_days: i32,
#[serde(rename = "collateralRequired")]
pub collateral_required: bool,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct AvailableLoans {
pub loans: Vec<AvailableLoan>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct RequestLoan {
pub credits: i32,
pub loan: shared::Loan,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct PayLoanUser {
pub username: String,
pub credits: i32,
pub ships: Vec<shared::Ship>,
pub loans: Vec<Loan>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct PayLoanResponse {
pub credits: i32,
pub loans: Vec<shared::Loan>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct ShipsForSale {
pub ships: Vec<shared::ShipForSale>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct PurchaseOrder {
pub credits: i32,
pub order: shared::Order,
pub ship: shared::Ship,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct AvailableLocations {
pub locations: Vec<shared::Location>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct FlightPlan {
#[serde(rename = "flightPlan")]
pub flight_plan: shared::FlightPlanData,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct SystemsInfo {
pub systems: Vec<shared::SystemsInfoData>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct User {
pub id: String,
pub username: String,
pub picture: Option<String>,
pub email: Option<String>,
pub credits: i32,
#[serde(rename = "createdAt")]
pub created_at: DateTime<Utc>,
#[serde(rename = "updatedAt")]
pub updated_at: DateTime<Utc>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct ClaimUsernameUser {
pub username: String,
pub credits: i32,
pub ships: Vec<shared::Ship>,
pub loans: Vec<shared::Loan>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct ClaimUsername {
pub token: String,
pub user: ClaimUsernameUser,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct MyShips {
pub ships: Vec<shared::Ship>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct MyShip {
pub ship: shared::Ship,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct LocationInfo {
pub location: shared::SystemsInfoLocation,
#[serde(rename = "dockedShips")]
pub docked_ships: i32,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct LoanInfo {
pub loans: Vec<shared::Loan>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct LocationMarketplace {
pub marketplace: Vec<shared::MarketplaceData>,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct PurchaseShip {
pub credits: i32,
pub ship: shared::Ship,
}
#[derive(Deserialize, Debug, Clone)]
#[cfg_attr(debug_assertions, serde(deny_unknown_fields))]
pub struct JettisonCargo {
#[serde(rename = "shipId")]
pub ship_id: String,
pub good: shared::Good,
#[serde(rename = "quantityRemaining")]
pub quantity_remaining: i32,
}