avina_wire/accounting/
server_consumption.rs

1use std::collections::HashMap;
2
3use chrono::{DateTime, FixedOffset};
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7pub type ServerConsumptionFlavors = HashMap<String, f64>;
8
9pub type ServerConsumptionServer = ServerConsumptionFlavors;
10
11#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
12pub struct ServerConsumptionUser {
13    pub total: ServerConsumptionFlavors,
14    pub servers: HashMap<Uuid, ServerConsumptionServer>,
15}
16
17#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
18pub struct ServerConsumptionProject {
19    pub total: ServerConsumptionFlavors,
20    pub users: HashMap<String, ServerConsumptionUser>,
21}
22
23#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Default)]
24pub struct ServerConsumptionAll {
25    pub total: ServerConsumptionFlavors,
26    pub projects: HashMap<String, ServerConsumptionProject>,
27}
28
29#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Default)]
30pub struct ServerConsumptionParams {
31    pub begin: Option<DateTime<FixedOffset>>,
32    pub end: Option<DateTime<FixedOffset>>,
33    pub server: Option<Uuid>,
34    pub user: Option<u32>,
35    pub project: Option<u32>,
36    pub all: Option<bool>,
37    pub detail: Option<bool>,
38}