reactive_graph_table_model/system/
instance.rs1use 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>;