forge/lib/models/src/store.rs
2026-06-03 05:59:56 -05:00

92 lines
2.5 KiB
Rust

use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreCheckoutItemSeed {
pub classname: String,
pub category: String,
pub price_value: f64,
pub quantity: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreCheckoutVehicleSeed {
pub classname: String,
pub category: String,
pub price_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreCheckoutUnitSeed {
pub classname: String,
pub category: String,
pub price_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreCheckoutContext {
pub requester_uid: String,
pub requester_name: String,
pub org_id: String,
pub requester_is_default_org_ceo: bool,
pub payment_method: String,
#[serde(default)]
pub items: Vec<StoreCheckoutItemSeed>,
#[serde(default)]
pub vehicles: Vec<StoreCheckoutVehicleSeed>,
#[serde(default)]
pub units: Vec<StoreCheckoutUnitSeed>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreGrantedItem {
pub classname: String,
pub category: String,
pub quantity: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreGrantedVehicle {
pub classname: String,
pub category: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreGrantedUnit {
pub classname: String,
pub category: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StoreCheckoutResult {
pub charged_total: f64,
pub payment_method: String,
pub message: String,
#[serde(default)]
pub locker_granted: Vec<StoreGrantedItem>,
#[serde(default)]
pub vehicle_granted: Vec<StoreGrantedVehicle>,
#[serde(default)]
pub unit_granted: Vec<StoreGrantedUnit>,
#[serde(default)]
pub locker_patch: HashMap<String, serde_json::Value>,
#[serde(default)]
pub va_patch: HashMap<String, serde_json::Value>,
#[serde(default)]
pub vgarage_patch: HashMap<String, serde_json::Value>,
#[serde(default)]
pub bank_patch: HashMap<String, serde_json::Value>,
#[serde(default)]
pub org_patch: HashMap<String, serde_json::Value>,
#[serde(default)]
pub org_target_uids: Vec<String>,
}