avina_wire/accounting/
server_cost.rs1use std::{collections::HashMap, fmt::Debug};
2
3use chrono::{DateTime, FixedOffset};
4use serde::{Deserialize, Serialize};
5#[cfg(feature = "tabled")]
6use tabled::Tabled;
7use uuid::Uuid;
8
9#[cfg_attr(feature = "tabled", derive(Tabled))]
10#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
11pub struct ServerCostSimple {
12 pub total: f64,
13}
14
15#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
16pub struct ServerCostServer {
17 pub total: f64,
18 pub flavors: HashMap<String, f64>,
19}
20
21#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
22pub struct ServerCostUser {
23 pub total: f64,
24 pub flavors: HashMap<String, f64>,
25 pub servers: HashMap<Uuid, ServerCostServer>,
26}
27
28#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
29pub struct ServerCostProject {
30 pub total: f64,
31 pub flavors: HashMap<String, f64>,
32 pub users: HashMap<String, ServerCostUser>,
33}
34
35#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
36pub struct ServerCostAll {
37 pub total: f64,
38 pub flavors: HashMap<String, f64>,
39 pub projects: HashMap<String, ServerCostProject>,
40}
41
42#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
43pub struct ServerCostParams {
44 pub begin: Option<DateTime<FixedOffset>>,
45 pub end: Option<DateTime<FixedOffset>>,
46 pub server: Option<Uuid>,
47 pub user: Option<u32>,
48 pub project: Option<u32>,
49 pub all: Option<bool>,
50 pub detail: Option<bool>,
51}