reifydb_core/interface/catalog/
namespace.rs1use crate::interface::catalog::id::NamespaceId;
5
6impl NamespaceId {
7 pub const ROOT: NamespaceId = NamespaceId(0);
8 pub const SYSTEM: NamespaceId = NamespaceId(1);
9 pub const DEFAULT: NamespaceId = NamespaceId(2);
10 pub const SYSTEM_CONFIG: NamespaceId = NamespaceId(3);
11 pub const SYSTEM_METRICS: NamespaceId = NamespaceId(4);
12 pub const SYSTEM_METRICS_STORAGE: NamespaceId = NamespaceId(5);
13 pub const SYSTEM_METRICS_CDC: NamespaceId = NamespaceId(6);
14 pub const SYSTEM_PROCEDURES: NamespaceId = NamespaceId(7);
15 pub const SYSTEM_BINDINGS: NamespaceId = NamespaceId(8);
16 pub const RQL: NamespaceId = NamespaceId(9);
17 pub const SYSTEM_METRICS_PROFILER: NamespaceId = NamespaceId(10);
18 pub const SYSTEM_METRICS_PROFILER_QUERY: NamespaceId = NamespaceId(11);
19 pub const SYSTEM_METRICS_PROFILER_TXN: NamespaceId = NamespaceId(12);
20 pub const SYSTEM_METRICS_PROFILER_STORAGE: NamespaceId = NamespaceId(13);
21 pub const SYSTEM_METRICS_PROFILER_PLAN: NamespaceId = NamespaceId(14);
22 pub const SYSTEM_METRICS_PROFILER_CDC: NamespaceId = NamespaceId(15);
23 pub const SYSTEM_METRICS_PROFILER_FLOW: NamespaceId = NamespaceId(16);
24 pub const SYSTEM_METRICS_RUNTIME: NamespaceId = NamespaceId(17);
25 pub const SYSTEM_METRICS_RUNTIME_MEMORY: NamespaceId = NamespaceId(18);
26 pub const SYSTEM_METRICS_RUNTIME_WATERMARKS: NamespaceId = NamespaceId(19);
27 pub const SYSTEM_METRICS_PROFILER_SUBSCRIPTION: NamespaceId = NamespaceId(20);
28 pub const SYSTEM_METRICS_PROFILER_SERVER: NamespaceId = NamespaceId(21);
29 pub const SYSTEM_METRICS_PROFILER_WIRE: NamespaceId = NamespaceId(22);
30 pub const SYSTEM_METRICS_PROFILER_AUTH: NamespaceId = NamespaceId(23);
31 pub const SYSTEM_METRICS_PROFILER_CATALOG: NamespaceId = NamespaceId(24);
32 pub const SYSTEM_METRICS_PROFILER_ENGINE: NamespaceId = NamespaceId(25);
33 pub const SYSTEM_METRICS_PROFILER_MUTATE: NamespaceId = NamespaceId(26);
34 pub const SYSTEM_METRICS_PROFILER_TRANSPORT: NamespaceId = NamespaceId(27);
35 pub const SYSTEM_METRICS_PROFILER_TASK: NamespaceId = NamespaceId(28);
36 pub const SYSTEM_METRICS_PROFILER_POLICY: NamespaceId = NamespaceId(29);
37 pub const SYSTEM_METRICS_PROFILER_FFI: NamespaceId = NamespaceId(30);
38 pub const SYSTEM_METRICS_PROFILER_CACHE: NamespaceId = NamespaceId(31);
39 pub const SYSTEM_METRICS_PROFILER_SHAPE: NamespaceId = NamespaceId(32);
40 pub const SYSTEM_METRICS_PROFILER_API: NamespaceId = NamespaceId(33);
41 pub const SYSTEM_METRICS_PROFILER_ACTOR: NamespaceId = NamespaceId(34);
42 pub const SYSTEM_METRICS_STORAGE_TABLE: NamespaceId = NamespaceId(37);
43 pub const SYSTEM_METRICS_STORAGE_VIEW: NamespaceId = NamespaceId(38);
44 pub const SYSTEM_METRICS_STORAGE_TABLE_VIRTUAL: NamespaceId = NamespaceId(39);
45 pub const SYSTEM_METRICS_STORAGE_RINGBUFFER: NamespaceId = NamespaceId(40);
46 pub const SYSTEM_METRICS_STORAGE_DICTIONARY: NamespaceId = NamespaceId(41);
47 pub const SYSTEM_METRICS_STORAGE_SERIES: NamespaceId = NamespaceId(42);
48 pub const SYSTEM_METRICS_STORAGE_FLOW: NamespaceId = NamespaceId(43);
49 pub const SYSTEM_METRICS_STORAGE_FLOW_NODE: NamespaceId = NamespaceId(44);
50 pub const SYSTEM_METRICS_STORAGE_SYSTEM: NamespaceId = NamespaceId(45);
51 pub const SYSTEM_METRICS_CDC_TABLE: NamespaceId = NamespaceId(46);
52 pub const SYSTEM_METRICS_CDC_VIEW: NamespaceId = NamespaceId(47);
53 pub const SYSTEM_METRICS_CDC_TABLE_VIRTUAL: NamespaceId = NamespaceId(48);
54 pub const SYSTEM_METRICS_CDC_RINGBUFFER: NamespaceId = NamespaceId(49);
55 pub const SYSTEM_METRICS_CDC_DICTIONARY: NamespaceId = NamespaceId(50);
56 pub const SYSTEM_METRICS_CDC_SERIES: NamespaceId = NamespaceId(51);
57 pub const SYSTEM_METRICS_CDC_FLOW: NamespaceId = NamespaceId(52);
58 pub const SYSTEM_METRICS_CDC_FLOW_NODE: NamespaceId = NamespaceId(53);
59 pub const SYSTEM_METRICS_CDC_SYSTEM: NamespaceId = NamespaceId(54);
60}
61
62#[derive(Debug, Clone, PartialEq)]
63pub enum Namespace {
64 Local {
65 id: NamespaceId,
66 name: String,
67 local_name: String,
68 parent_id: NamespaceId,
69 },
70 Remote {
71 id: NamespaceId,
72 name: String,
73 local_name: String,
74 parent_id: NamespaceId,
75 address: String,
76 token: Option<String>,
77 },
78}
79
80impl Namespace {
81 pub fn id(&self) -> NamespaceId {
82 match self {
83 Namespace::Local {
84 id,
85 ..
86 }
87 | Namespace::Remote {
88 id,
89 ..
90 } => *id,
91 }
92 }
93
94 pub fn name(&self) -> &str {
95 match self {
96 Namespace::Local {
97 name,
98 ..
99 }
100 | Namespace::Remote {
101 name,
102 ..
103 } => name,
104 }
105 }
106
107 pub fn local_name(&self) -> &str {
108 match self {
109 Namespace::Local {
110 local_name,
111 ..
112 }
113 | Namespace::Remote {
114 local_name,
115 ..
116 } => local_name,
117 }
118 }
119
120 pub fn parent_id(&self) -> NamespaceId {
121 match self {
122 Namespace::Local {
123 parent_id,
124 ..
125 }
126 | Namespace::Remote {
127 parent_id,
128 ..
129 } => *parent_id,
130 }
131 }
132
133 pub fn address(&self) -> Option<&str> {
134 match self {
135 Namespace::Remote {
136 address,
137 ..
138 } => Some(address),
139 _ => None,
140 }
141 }
142
143 pub fn token(&self) -> Option<&str> {
144 match self {
145 Namespace::Remote {
146 token,
147 ..
148 } => token.as_deref(),
149 _ => None,
150 }
151 }
152
153 pub fn is_remote(&self) -> bool {
154 matches!(self, Namespace::Remote { .. })
155 }
156
157 pub fn system() -> Self {
158 Self::Local {
159 id: NamespaceId::SYSTEM,
160 name: "system".to_string(),
161 local_name: "system".to_string(),
162 parent_id: NamespaceId::ROOT,
163 }
164 }
165
166 pub fn default_namespace() -> Self {
167 Self::Local {
168 id: NamespaceId::DEFAULT,
169 name: "default".to_string(),
170 local_name: "default".to_string(),
171 parent_id: NamespaceId::ROOT,
172 }
173 }
174}