1use crate::Ident;
2use revision::revisioned;
3use serde::{Deserialize, Serialize};
4use std::fmt;
5
6#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Serialize, Deserialize, Hash)]
7#[revisioned(revision = 1)]
8pub enum Base {
9 Root,
10 Ns,
11 Db,
12 Sc(Ident),
13}
14
15impl Default for Base {
16 fn default() -> Self {
17 Self::Root
18 }
19}
20
21impl fmt::Display for Base {
22 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
23 match self {
24 Self::Ns => f.write_str("NAMESPACE"),
25 Self::Db => f.write_str("DATABASE"),
26 Self::Sc(sc) => write!(f, "SCOPE {sc}"),
27 Self::Root => f.write_str("ROOT"),
28 }
29 }
30}