lrzcc_wire/accounting/
server_state.rs1use crate::common::display_option;
2use chrono::{DateTime, FixedOffset};
3use serde::{Deserialize, Serialize};
4use std::fmt::Display;
5use tabled::Tabled;
6
7#[derive(Clone, Debug, Deserialize, Serialize, Tabled, PartialEq)]
8pub struct ServerState {
9 pub id: u32,
10 pub begin: DateTime<FixedOffset>,
11 #[tabled(display_with = "display_option")]
12 pub end: Option<DateTime<FixedOffset>>,
13 pub instance_id: String, pub instance_name: String,
15 pub flavor: u32,
16 pub flavor_name: String,
17 pub status: String,
18 pub user: u32,
19 pub username: String,
20}
21
22impl Display for ServerState {
23 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24 f.write_str(&format!("ServerState(id={})", self.id))
25 }
26}
27
28#[derive(Clone, Debug, Deserialize, Serialize, Tabled, PartialEq)]
29pub struct ServerStateImport {
30 pub new_state_count: u32,
31 pub end_state_count: u32,
32}
33
34#[derive(Clone, Debug, Serialize, Deserialize)]
35pub struct ServerStateListParams {
36 pub server: Option<String>,
37 pub user: Option<u32>,
38 pub project: Option<u32>,
39 pub all: Option<bool>,
40}
41
42#[derive(Clone, Debug, Serialize, Deserialize)]
43pub struct ServerStateCreateData {
44 pub begin: DateTime<FixedOffset>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub end: Option<DateTime<FixedOffset>>,
47 pub instance_id: String, pub instance_name: String,
49 pub flavor: u32,
50 pub status: String,
52 pub user: u32,
53}
54
55impl ServerStateCreateData {
56 pub fn new(
57 begin: DateTime<FixedOffset>,
58 instance_id: String, instance_name: String,
60 flavor: u32,
61 status: String,
62 user: u32,
63 ) -> Self {
64 Self {
65 begin,
66 end: None,
67 instance_id,
68 instance_name,
69 flavor,
70 status,
71 user,
72 }
73 }
74}
75
76#[derive(Clone, Debug, Serialize, Deserialize)]
77pub struct ServerStateModifyData {
78 pub id: u32,
79
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub begin: Option<DateTime<FixedOffset>>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub end: Option<DateTime<FixedOffset>>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub instance_id: Option<String>, #[serde(skip_serializing_if = "Option::is_none")]
87 pub instance_name: Option<String>,
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub flavor: Option<u32>,
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub status: Option<String>,
93 #[serde(skip_serializing_if = "Option::is_none")]
94 pub user: Option<u32>,
95}
96
97impl ServerStateModifyData {
98 pub fn new(id: u32) -> Self {
99 Self {
100 id,
101 begin: None,
102 end: None,
103 instance_id: None,
104 instance_name: None,
105 flavor: None,
106 status: None,
107 user: None,
108 }
109 }
110}