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 SYSTEM_FLOW: NamespaceId = NamespaceId(54);
62 pub const GRAPHQL: NamespaceId = NamespaceId(55);
63 pub const SYSTEM_FLOW_OPERATOR: NamespaceId = NamespaceId(56);
64 pub const SYSTEM_FLOW_OPERATOR_LIBRARY: NamespaceId = NamespaceId(57);
65}
66
67#[derive(Debug, Clone, PartialEq)]
68pub enum Namespace {
69 Local {
70 id: NamespaceId,
71 name: String,
72 local_name: String,
73 parent_id: NamespaceId,
74 },
75 Remote {
76 id: NamespaceId,
77 name: String,
78 local_name: String,
79 parent_id: NamespaceId,
80 address: String,
81 token: Option<String>,
82 },
83}
84
85impl Namespace {
86 pub fn id(&self) -> NamespaceId {
87 match self {
88 Namespace::Local {
89 id,
90 ..
91 }
92 | Namespace::Remote {
93 id,
94 ..
95 } => *id,
96 }
97 }
98
99 pub fn name(&self) -> &str {
100 match self {
101 Namespace::Local {
102 name,
103 ..
104 }
105 | Namespace::Remote {
106 name,
107 ..
108 } => name,
109 }
110 }
111
112 pub fn local_name(&self) -> &str {
113 match self {
114 Namespace::Local {
115 local_name,
116 ..
117 }
118 | Namespace::Remote {
119 local_name,
120 ..
121 } => local_name,
122 }
123 }
124
125 pub fn parent_id(&self) -> NamespaceId {
126 match self {
127 Namespace::Local {
128 parent_id,
129 ..
130 }
131 | Namespace::Remote {
132 parent_id,
133 ..
134 } => *parent_id,
135 }
136 }
137
138 pub fn address(&self) -> Option<&str> {
139 match self {
140 Namespace::Remote {
141 address,
142 ..
143 } => Some(address),
144 _ => None,
145 }
146 }
147
148 pub fn token(&self) -> Option<&str> {
149 match self {
150 Namespace::Remote {
151 token,
152 ..
153 } => token.as_deref(),
154 _ => None,
155 }
156 }
157
158 pub fn is_remote(&self) -> bool {
159 matches!(self, Namespace::Remote { .. })
160 }
161
162 pub fn system() -> Self {
163 Self::Local {
164 id: NamespaceId::SYSTEM,
165 name: "system".to_string(),
166 local_name: "system".to_string(),
167 parent_id: NamespaceId::ROOT,
168 }
169 }
170
171 pub fn default_namespace() -> Self {
172 Self::Local {
173 id: NamespaceId::DEFAULT,
174 name: "default".to_string(),
175 local_name: "default".to_string(),
176 parent_id: NamespaceId::ROOT,
177 }
178 }
179}