1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![doc = include_str!("../README.md")]
3#![warn(clippy::all, clippy::pedantic)]
4#![allow(
5 clippy::needless_for_each,
6 clippy::missing_errors_doc,
7 clippy::cast_precision_loss,
8 clippy::match_wildcard_for_single_variants,
9 clippy::similar_names
10)]
11
12use serde::{Deserialize, Serialize};
17use utoipa::ToSchema;
18
19#[cfg(feature = "client")]
21pub mod client;
22
23#[cfg(feature = "server")]
25pub mod server;
26
27fn permissions_field(idx: u8) -> ordinary_types::Field {
28 ordinary_types::Field {
29 idx,
30 name: "permissions".into(),
31 kind: ordinary_types::Kind::List {
32 kind: Box::new(ordinary_types::Kind::Enum {
33 name: "permissions".into(),
34 opts: vec![
35 ordinary_types::EnumOpt {
36 idx: 0,
37 name: "admin".into(),
38 },
39 ordinary_types::EnumOpt {
40 idx: 1,
41 name: "read".into(),
42 },
43 ordinary_types::EnumOpt {
44 idx: 2,
45 name: "write".into(),
46 },
47 ordinary_types::EnumOpt {
48 idx: 3,
49 name: "update".into(),
50 },
51 ordinary_types::EnumOpt {
52 idx: 4,
53 name: "upload".into(),
54 },
55 ordinary_types::EnumOpt {
56 idx: 5,
57 name: "install".into(),
58 },
59 ordinary_types::EnumOpt {
60 idx: 6,
61 name: "deploy".into(),
62 },
63 ordinary_types::EnumOpt {
64 idx: 7,
65 name: "bridge".into(),
66 },
67 ordinary_types::EnumOpt {
68 idx: 8,
69 name: "kill".into(),
70 },
71 ordinary_types::EnumOpt {
72 idx: 9,
73 name: "erase".into(),
74 },
75 ],
76 }),
77 },
78 ..Default::default()
79 }
80}
81
82#[must_use]
83pub fn api_invite_claims() -> Vec<ordinary_types::Field> {
84 vec![
85 ordinary_types::Field {
86 idx: 1,
87 name: "account".into(),
88 kind: ordinary_types::Kind::String,
89 ..Default::default()
90 },
91 ordinary_types::Field {
92 idx: 2,
93 name: "domain".into(),
94 kind: ordinary_types::Kind::String,
95 ..Default::default()
96 },
97 permissions_field(3),
98 ]
99}
100
101#[must_use]
102pub fn api_account_claims() -> Vec<ordinary_types::Field> {
103 vec![
104 ordinary_types::Field {
105 idx: 1,
106 name: "domain".into(),
107 kind: ordinary_types::Kind::String,
108 ..Default::default()
109 },
110 permissions_field(2),
111 ]
112}
113
114#[derive(Serialize, Deserialize, ToSchema)]
115pub struct ApiInfo {
116 pub system_cpu_count: usize,
117 pub system_cpu_usage: String,
118
119 pub system_memory_total: String,
120 pub system_memory_used: String,
121 pub system_memory_free: String,
122 pub system_memory_available: String,
123
124 pub process_cpu_usage: String,
125 pub process_cpu_time: String,
126
127 #[serde(skip_serializing_if = "Option::is_none")]
128 #[serde(default)]
129 pub process_threads: Option<usize>,
130
131 pub process_memory_real: String,
132 pub process_memory_virtual: String,
133
134 pub process_disk_read: String,
135 pub process_disk_write: String,
136}