reifydb_core/interface/catalog/
namespace.rs1use crate::interface::catalog::id::{NamespaceId, RESERVED_USER_ID_START};
5
6impl NamespaceId {
7 pub const fn is_system(&self) -> bool {
8 self.0 < RESERVED_USER_ID_START
9 }
10
11 pub const ROOT: NamespaceId = NamespaceId(0);
12 pub const SYSTEM: NamespaceId = NamespaceId(1);
13 pub const DEFAULT: NamespaceId = NamespaceId(2);
14 pub const SYSTEM_CONFIG: NamespaceId = NamespaceId(3);
15 pub const SYSTEM_METRICS: NamespaceId = NamespaceId(4);
16 pub const SYSTEM_METRICS_STORAGE: NamespaceId = NamespaceId(5);
17 pub const SYSTEM_METRICS_CDC: NamespaceId = NamespaceId(6);
18 pub const SYSTEM_PROCEDURES: NamespaceId = NamespaceId(7);
19 pub const SYSTEM_BINDINGS: NamespaceId = NamespaceId(8);
20 pub const RQL: NamespaceId = NamespaceId(9);
21 pub const SYSTEM_METRICS_PROFILER: NamespaceId = NamespaceId(10);
22 pub const SYSTEM_METRICS_PROFILER_SPANS: NamespaceId = NamespaceId(11);
23 pub const SYSTEM_METRICS_RUNTIME: NamespaceId = NamespaceId(12);
24 pub const SYSTEM_METRICS_RUNTIME_MEMORY: NamespaceId = NamespaceId(13);
25 pub const SYSTEM_METRICS_RUNTIME_WATERMARKS: NamespaceId = NamespaceId(14);
26 pub const SYSTEM_METRICS_RUNTIME_OPERATORS: NamespaceId = NamespaceId(15);
27 pub const SYSTEM_METRICS_PROC: NamespaceId = NamespaceId(16);
28 pub const SYSTEM_METRICS_PROC_PROCESS: NamespaceId = NamespaceId(17);
29 pub const SYSTEM_METRICS_PROC_PROCESS_IO: NamespaceId = NamespaceId(18);
30 pub const SYSTEM_METRICS_PROC_PROCESS_MEMORY: NamespaceId = NamespaceId(19);
31 pub const SYSTEM_METRICS_PROC_PROCESS_SCHED: NamespaceId = NamespaceId(20);
32 pub const SYSTEM_METRICS_PROC_CGROUP: NamespaceId = NamespaceId(21);
33 pub const SYSTEM_METRICS_PROC_CGROUP_IO: NamespaceId = NamespaceId(22);
34 pub const SYSTEM_METRICS_PROC_CGROUP_MEMORY: NamespaceId = NamespaceId(23);
35 pub const SYSTEM_METRICS_PROC_CGROUP_CPU: NamespaceId = NamespaceId(24);
36 pub const SYSTEM_METRICS_PROC_CGROUP_PRESSURE: NamespaceId = NamespaceId(25);
37 pub const SYSTEM_METRICS_STORE: NamespaceId = NamespaceId(26);
38 pub const SYSTEM_METRICS_STORE_MULTI: NamespaceId = NamespaceId(27);
39 pub const SYSTEM_METRICS_STORE_MULTI_COMMIT: NamespaceId = NamespaceId(28);
40 pub const SYSTEM_METRICS_STORE_MULTI_PERSISTENT: NamespaceId = NamespaceId(29);
41 pub const SYSTEM_METRICS_STORE_SINGLE: NamespaceId = NamespaceId(30);
42 pub const SYSTEM_METRICS_STORE_SINGLE_COMMIT: NamespaceId = NamespaceId(31);
43 pub const SYSTEM_METRICS_STORE_SINGLE_PERSISTENT: NamespaceId = NamespaceId(32);
44 pub const SYSTEM_METRICS_STORE_OPERATOR: NamespaceId = NamespaceId(33);
45 pub const SYSTEM_METRICS_STORE_OPERATOR_PERSISTENT: NamespaceId = NamespaceId(37);
46 pub const SYSTEM_METRICS_INSTRUMENTS: NamespaceId = NamespaceId(38);
47 pub const SYSTEM_METRICS_EPOCH: NamespaceId = NamespaceId(39);
48 pub const SYSTEM_METRICS_LIFECYCLE: NamespaceId = NamespaceId(40);
49 pub const SYSTEM_SOURCE: NamespaceId = NamespaceId(41);
50 pub const STORAGE: NamespaceId = NamespaceId(42);
51 pub const SYSTEM_METRICS_FLOW: NamespaceId = NamespaceId(43);
52 pub const SYSTEM_METRICS_FLOW_STATE: NamespaceId = NamespaceId(44);
53 pub const SYSTEM_METRICS_STORE_OPERATOR_RANGE: NamespaceId = NamespaceId(46);
54 pub const SYSTEM_METRICS_STORE_OPERATOR_RANGE_KEYSPACE: NamespaceId = NamespaceId(47);
55 pub const SYSTEM_METRICS_STORE_MULTI_RANGE: NamespaceId = NamespaceId(52);
56 pub const SYSTEM_METRICS_STORE_MULTI_POINT: NamespaceId = NamespaceId(53);
57 pub const SYSTEM_METRICS_STORE_CDC: NamespaceId = NamespaceId(48);
58 pub const SYSTEM_METRICS_STORE_CDC_COMMIT: NamespaceId = NamespaceId(49);
59 pub const SYSTEM_METRICS_STORE_CDC_READ: NamespaceId = NamespaceId(50);
60 pub const SYSTEM_METRICS_STORE_CDC_PERSISTENT: NamespaceId = NamespaceId(51);
61 pub const GRAPHQL: NamespaceId = NamespaceId(55);
62}
63
64#[derive(Debug, Clone, PartialEq)]
65pub enum Namespace {
66 Local {
67 id: NamespaceId,
68 name: String,
69 local_name: String,
70 parent_id: NamespaceId,
71 },
72 Remote {
73 id: NamespaceId,
74 name: String,
75 local_name: String,
76 parent_id: NamespaceId,
77 address: String,
78 token: Option<String>,
79 },
80}
81
82impl Namespace {
83 pub fn id(&self) -> NamespaceId {
84 match self {
85 Namespace::Local {
86 id,
87 ..
88 }
89 | Namespace::Remote {
90 id,
91 ..
92 } => *id,
93 }
94 }
95
96 pub fn name(&self) -> &str {
97 match self {
98 Namespace::Local {
99 name,
100 ..
101 }
102 | Namespace::Remote {
103 name,
104 ..
105 } => name,
106 }
107 }
108
109 pub fn local_name(&self) -> &str {
110 match self {
111 Namespace::Local {
112 local_name,
113 ..
114 }
115 | Namespace::Remote {
116 local_name,
117 ..
118 } => local_name,
119 }
120 }
121
122 pub fn parent_id(&self) -> NamespaceId {
123 match self {
124 Namespace::Local {
125 parent_id,
126 ..
127 }
128 | Namespace::Remote {
129 parent_id,
130 ..
131 } => *parent_id,
132 }
133 }
134
135 pub fn address(&self) -> Option<&str> {
136 match self {
137 Namespace::Remote {
138 address,
139 ..
140 } => Some(address),
141 _ => None,
142 }
143 }
144
145 pub fn token(&self) -> Option<&str> {
146 match self {
147 Namespace::Remote {
148 token,
149 ..
150 } => token.as_deref(),
151 _ => None,
152 }
153 }
154
155 pub fn is_remote(&self) -> bool {
156 matches!(self, Namespace::Remote { .. })
157 }
158
159 pub fn system() -> Self {
160 Self::Local {
161 id: NamespaceId::SYSTEM,
162 name: "system".to_string(),
163 local_name: "system".to_string(),
164 parent_id: NamespaceId::ROOT,
165 }
166 }
167
168 pub fn default_namespace() -> Self {
169 Self::Local {
170 id: NamespaceId::DEFAULT,
171 name: "default".to_string(),
172 local_name: "default".to_string(),
173 parent_id: NamespaceId::ROOT,
174 }
175 }
176}