surrealdb_core/key/namespace/
all.rs1use 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}