surrealdb_core/key/namespace/
all.rs

1//! Stores the key prefix for all keys under a namespace
2use crate::key::category::Categorise;
3use crate::key::category::Category;
4use crate::kvs::impl_key;
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Serialize, Deserialize)]
8#[non_exhaustive]
9pub struct All<'a> {
10	__: u8,
11	_a: u8,
12	pub ns: &'a str,
13}
14impl_key!(All<'a>);
15
16pub fn new(ns: &str) -> All<'_> {
17	All::new(ns)
18}
19
20impl Categorise for All<'_> {
21	fn categorise(&self) -> Category {
22		Category::NamespaceRoot
23	}
24}
25
26impl<'a> All<'a> {
27	pub fn new(ns: &'a str) -> Self {
28		Self {
29			__: b'/',
30			_a: b'*',
31			ns,
32		}
33	}
34}
35
36#[cfg(test)]
37mod tests {
38	use crate::kvs::{KeyDecode, KeyEncode};
39	#[test]
40	fn key() {
41		use super::*;
42		#[rustfmt::skip]
43		let val = All::new(
44			"testns",
45		);
46		let enc = All::encode(&val).unwrap();
47		assert_eq!(enc, b"/*testns\0");
48
49		let dec = All::decode(&enc).unwrap();
50		assert_eq!(val, dec);
51	}
52}