reactive_graph_table_model/system/
instance.rs

1use tabled::Tabled;
2
3use crate::container::DefaultTableContainer;
4use crate::container::DefaultTableOptions;
5use crate::container::TableInlineFormat;
6use crate::container::TableInlineFormatSetter;
7
8#[derive(Clone, Debug, Tabled)]
9pub struct InstanceInfo {
10    pub name: String,
11    #[allow(unused)]
12    #[tabled(skip)]
13    pub description: String,
14    pub version: String,
15    pub plugin_api_version: String,
16    pub rustc_channel: String,
17    pub rustc_version: String,
18    pub hostname: String,
19    pub port: i32,
20    #[allow(unused)]
21    #[tabled(skip)]
22    pub secure: bool,
23    #[allow(unused)]
24    #[tabled(skip)]
25    pub git_commit: String,
26    #[allow(unused)]
27    #[tabled(skip)]
28    pub git_tag: String,
29    #[allow(unused)]
30    #[tabled(skip)]
31    pub last_seen: String,
32
33    #[tabled(skip)]
34    inline_format: TableInlineFormat,
35}
36
37impl TableInlineFormatSetter for InstanceInfo {
38    fn set_table_inline_format(&mut self, table_inline_format: TableInlineFormat) {
39        self.inline_format = table_inline_format;
40    }
41}
42
43impl From<reactive_graph_remotes_model::InstanceInfo> for InstanceInfo {
44    fn from(instance_info: reactive_graph_remotes_model::InstanceInfo) -> Self {
45        InstanceInfo {
46            name: instance_info.name,
47            description: instance_info.description,
48            version: instance_info.version,
49            plugin_api_version: instance_info.plugin_api_version,
50            rustc_channel: instance_info.rustc_channel,
51            rustc_version: instance_info.rustc_version,
52            hostname: instance_info.address.hostname,
53            port: i32::from(instance_info.address.port),
54            secure: instance_info.address.secure,
55            git_commit: instance_info.git_commit,
56            git_tag: instance_info.git_tag,
57            last_seen: instance_info.last_seen.to_rfc3339(),
58            inline_format: Default::default(),
59        }
60    }
61}
62
63pub type InstanceInfos = DefaultTableContainer<reactive_graph_remotes_model::InstanceInfo, InstanceInfo, DefaultTableOptions>;