surrealpatch/core/src/key/error.rs
2024-04-02 20:12:08 +00:00

180 lines
6.9 KiB
Rust

use std::fmt::{Display, Formatter};
#[derive(Debug, Copy, Clone)]
#[non_exhaustive]
pub enum KeyCategory {
/// This category is reserved for cases when we do not know the category
/// It should be caught and re-populated with the correct category where appropriate
Unknown,
/// crate::key::root::all /
Root,
/// crate::key::root::hb /!hb{ts}/{nd}
Heartbeat,
/// crate::key::root::nd /!nd{nd}
Node,
/// crate::key::root::ni /!ni
NamespaceIdentifier,
/// crate::key::root::ns /!ns{ns}
Namespace,
/// crate::key::root::us /!us{us}
User,
///
/// crate::key::node::all /${nd}
NodeRoot,
/// crate::key::node::lq /${nd}!lq{lq}{ns}{db}
NodeLiveQuery,
///
/// crate::key::namespace::all /*{ns}
NamespaceRoot,
/// crate::key::namespace::db /*{ns}!db{db}
DatabaseAlias,
/// crate::key::namespace::di /+{ns id}!di
DatabaseIdentifier,
/// crate::key::namespace::lg /*{ns}!lg{lg}
DatabaseLogAlias,
/// crate::key::namespace::tk /*{ns}!tk{tk}
NamespaceToken,
/// crate::key::namespace::us /*{ns}!us{us}
NamespaceUser,
///
/// crate::key::database::all /*{ns}*{db}
DatabaseRoot,
/// crate::key::database::az /*{ns}*{db}!az{az}
DatabaseAnalyzer,
/// crate::key::database::fc /*{ns}*{db}!fn{fc}
DatabaseFunction,
/// crate::key::database::lg /*{ns}*{db}!lg{lg}
DatabaseLog,
/// crate::key::database::ml /*{ns}*{db}!ml{ml}{vn}
DatabaseModel,
/// crate::key::database::pa /*{ns}*{db}!pa{pa}
DatabaseParameter,
/// crate::key::database::sc /*{ns}*{db}!sc{sc}
DatabaseScope,
/// crate::key::database::tb /*{ns}*{db}!tb{tb}
DatabaseTable,
/// crate::key::database::ti /+{ns id}*{db id}!ti
DatabaseTableIdentifier,
/// crate::key::database::tk /*{ns}*{db}!tk{tk}
DatabaseToken,
/// crate::key::database::ts /*{ns}*{db}!ts{ts}
DatabaseTimestamp,
/// crate::key::database::us /*{ns}*{db}!us{us}
DatabaseUser,
/// crate::key::database::vs /*{ns}*{db}!vs
DatabaseVersionstamp,
///
/// crate::key::scope::all /*{ns}*{db}±{sc}
ScopeRoot,
/// crate::key::scope::tk /*{ns}*{db}±{sc}!tk{tk}
ScopeToken,
///
/// crate::key::table::all /*{ns}*{db}*{tb}
TableRoot,
/// crate::key::table::ev /*{ns}*{db}*{tb}!ev{ev}
TableEvent,
/// crate::key::table::fd /*{ns}*{db}*{tb}!fd{fd}
TableField,
/// crate::key::table::ft /*{ns}*{db}*{tb}!ft{ft}
TableView, // (ft = foreign table = view)
/// crate::key::table::ix /*{ns}*{db}*{tb}!ix{ix}
IndexDefinition,
/// crate::key::table::lq /*{ns}*{db}*{tb}!lq{lq}
TableLiveQuery,
///
/// crate::key::index::all /*{ns}*{db}*{tb}+{ix}
IndexRoot,
/// crate::key::index::bc /*{ns}*{db}*{tb}+{ix}!bc{id}
IndexTermDocList,
/// crate::key::index::bd /*{ns}*{db}*{tb}+{ix}!bd{id}
IndexBTreeNode,
/// crate::key::index::bf /*{ns}*{db}*{tb}+{ix}!bf{id}
IndexTermDocFrequency,
/// crate::key::index::bi /*{ns}*{db}*{tb}+{ix}!bi{id}
IndexDocKeys,
/// crate::key::index::bk /*{ns}*{db}*{tb}+{ix}!bk{id}
IndexTermList,
/// crate::key::index::bl /*{ns}*{db}*{tb}+{ix}!bl{id}
IndexBTreeNodeDocLengths,
/// crate::key::index::bo /*{ns}*{db}*{tb}+{ix}!bo{id}
IndexOffset,
/// crate::key::index::bp /*{ns}*{db}*{tb}+{ix}!bp{id}
IndexBTreeNodePostings,
/// crate::key::index::bs /*{ns}*{db}*{tb}+{ix}!bs
IndexFullTextState,
/// crate::key::index::bt /*{ns}*{db}*{tb}+{ix}!bt{id}
IndexBTreeNodeTerms,
/// crate::key::index::bu /*{ns}*{db}*{tb}+{ix}!bu{id}
IndexTerms,
/// crate::key::index /*{ns}*{db}*{tb}+{ix}*{fd}{id}
Index,
///
/// crate::key::change /*{ns}*{db}#{ts}
ChangeFeed,
///
/// crate::key::thing /*{ns}*{db}*{tb}*{id}
Thing,
///
/// crate::key::graph /*{ns}*{db}*{tb}~{id}{eg}{fk}
Graph,
}
impl Display for KeyCategory {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let name = match self {
KeyCategory::Unknown => "Unknown",
KeyCategory::Root => "Root",
KeyCategory::Heartbeat => "Heartbeat",
KeyCategory::Node => "Node",
KeyCategory::NamespaceIdentifier => "NamespaceIdentifier",
KeyCategory::Namespace => "Namespace",
KeyCategory::User => "User",
KeyCategory::NodeRoot => "NodeRoot",
KeyCategory::NodeLiveQuery => "NodeLiveQuery",
KeyCategory::NamespaceRoot => "NamespaceRoot",
KeyCategory::DatabaseAlias => "DatabaseAlias",
KeyCategory::DatabaseIdentifier => "DatabaseIdentifier",
KeyCategory::DatabaseLogAlias => "DatabaseLogAlias",
KeyCategory::NamespaceToken => "NamespaceToken",
KeyCategory::NamespaceUser => "NamespaceUser",
KeyCategory::DatabaseRoot => "DatabaseRoot",
KeyCategory::DatabaseAnalyzer => "DatabaseAnalyzer",
KeyCategory::DatabaseFunction => "DatabaseFunction",
KeyCategory::DatabaseLog => "DatabaseLog",
KeyCategory::DatabaseModel => "DatabaseModel",
KeyCategory::DatabaseParameter => "DatabaseParameter",
KeyCategory::DatabaseScope => "DatabaseScope",
KeyCategory::DatabaseTable => "DatabaseTable",
KeyCategory::DatabaseTableIdentifier => "DatabaseTableIdentifier",
KeyCategory::DatabaseToken => "DatabaseToken",
KeyCategory::DatabaseTimestamp => "DatabaseTimestamp",
KeyCategory::DatabaseUser => "DatabaseUser",
KeyCategory::DatabaseVersionstamp => "DatabaseVersionstamp",
KeyCategory::ScopeRoot => "ScopeRoot",
KeyCategory::ScopeToken => "ScopeToken",
KeyCategory::TableRoot => "TableRoot",
KeyCategory::TableEvent => "TableEvent",
KeyCategory::TableField => "TableField",
KeyCategory::TableView => "TableView",
KeyCategory::IndexDefinition => "IndexDefinition",
KeyCategory::TableLiveQuery => "TableLiveQuery",
KeyCategory::IndexRoot => "IndexRoot",
KeyCategory::IndexTermDocList => "IndexTermDocList",
KeyCategory::IndexBTreeNode => "IndexBTreeNode",
KeyCategory::IndexTermDocFrequency => "IndexTermDocFrequency",
KeyCategory::IndexDocKeys => "IndexDocKeys",
KeyCategory::IndexTermList => "IndexTermList",
KeyCategory::IndexBTreeNodeDocLengths => "IndexBTreeNodeDocLengths",
KeyCategory::IndexOffset => "IndexOffset",
KeyCategory::IndexBTreeNodePostings => "IndexBTreeNodePostings",
KeyCategory::IndexFullTextState => "IndexFullTextState",
KeyCategory::IndexBTreeNodeTerms => "IndexBTreeNodeTerms",
KeyCategory::IndexTerms => "IndexTerms",
KeyCategory::Index => "Index",
KeyCategory::ChangeFeed => "ChangeFeed",
KeyCategory::Thing => "Thing",
KeyCategory::Graph => "Graph",
};
write!(f, "{}", name)
}
}