use uuid::Uuid;
use super::lookup::Lookup;
use crate::catalog::{DatabaseId, NamespaceId};
use crate::val::RecordIdKey;
#[derive(Hash, Eq, PartialEq)]
pub(crate) enum Key {
Nds,
Rus,
Ras,
Rgs(String),
Nss,
Nus(NamespaceId),
Nas(NamespaceId),
Ngs(NamespaceId, String),
Dbs(NamespaceId),
Dus(NamespaceId, DatabaseId),
Das(NamespaceId, DatabaseId),
Dgs(NamespaceId, DatabaseId, String),
Aps(NamespaceId, DatabaseId),
Azs(NamespaceId, DatabaseId),
Bus(NamespaceId, DatabaseId),
Fcs(NamespaceId, DatabaseId),
Mds(NamespaceId, DatabaseId),
Mls(NamespaceId, DatabaseId),
Cgs(NamespaceId, DatabaseId),
Pas(NamespaceId, DatabaseId),
Tbs(NamespaceId, DatabaseId),
DbReferenceTargets(NamespaceId, DatabaseId),
Sqs(NamespaceId, DatabaseId),
Evs(NamespaceId, DatabaseId, String),
Fds(NamespaceId, DatabaseId, String),
Fts(NamespaceId, DatabaseId, String),
Ixs(NamespaceId, DatabaseId, String),
Lvs(NamespaceId, DatabaseId, String),
Nd(Uuid),
Rcg(String),
Ru(String),
Ra(String),
Rg(String, String),
NsByName(String),
Nu(NamespaceId, String),
Na(NamespaceId, String),
Ng(NamespaceId, String, String),
DbByName(String, String),
Du(NamespaceId, DatabaseId, String),
Da(NamespaceId, DatabaseId, String),
Dg(NamespaceId, DatabaseId, String, String),
Ap(NamespaceId, DatabaseId, String),
Az(NamespaceId, DatabaseId, String),
Bu(NamespaceId, DatabaseId, String),
Fc(NamespaceId, DatabaseId, String),
Md(NamespaceId, DatabaseId, String),
Ml(NamespaceId, DatabaseId, String, String),
Cg(NamespaceId, DatabaseId, String),
Pa(NamespaceId, DatabaseId, String),
Sq(NamespaceId, DatabaseId, String),
TbByName(String, String, String),
Tb(NamespaceId, DatabaseId, String),
Ev(NamespaceId, DatabaseId, String, String),
Fd(NamespaceId, DatabaseId, String, String),
Ix(NamespaceId, DatabaseId, String, String),
Record(NamespaceId, DatabaseId, String, RecordIdKey),
}
impl<'a> From<Lookup<'a>> for Key {
#[rustfmt::skip]
fn from(value: Lookup<'a>) -> Self {
match value {
Lookup::Nds => Key::Nds,
Lookup::Rus => Key::Rus,
Lookup::Ras => Key::Ras,
Lookup::Rgs(a) => Key::Rgs(a.to_string()),
Lookup::Nss => Key::Nss,
Lookup::Nus(a) => Key::Nus(a),
Lookup::Nas(a) => Key::Nas(a),
Lookup::Ngs(a, b) => Key::Ngs(a, b.to_string()),
Lookup::Dbs(a) => Key::Dbs(a),
Lookup::Dus(a, b) => Key::Dus(a, b),
Lookup::Das(a, b) => Key::Das(a, b),
Lookup::Dgs(a, b, c) => Key::Dgs(a, b, c.to_string()),
Lookup::Aps(a, b) => Key::Aps(a, b),
Lookup::Azs(a, b) => Key::Azs(a, b),
Lookup::Bus(a, b) => Key::Bus(a, b),
Lookup::Fcs(a, b) => Key::Fcs(a, b),
Lookup::Mds(a, b) => Key::Mds(a, b),
Lookup::Mls(a, b) => Key::Mls(a, b),
Lookup::Cgs(a, b) => Key::Cgs(a, b),
Lookup::Pas(a, b) => Key::Pas(a, b),
Lookup::Sqs(a, b) => Key::Sqs(a, b),
Lookup::Tbs(a, b) => Key::Tbs(a, b),
Lookup::DbReferenceTargets(a, b) => Key::DbReferenceTargets(a, b),
Lookup::Evs(a, b, c) => Key::Evs(a, b, c.to_string()),
Lookup::Fds(a, b, c) => Key::Fds(a, b, c.to_string()),
Lookup::Fts(a, b, c) => Key::Fts(a, b, c.to_string()),
Lookup::Ixs(a, b, c) => Key::Ixs(a, b, c.to_string()),
Lookup::Lvs(a, b, c) => Key::Lvs(a, b, c.to_string()),
Lookup::Nd(a) => Key::Nd(a),
Lookup::Rcg(a) => Key::Rcg(a.to_string()),
Lookup::Ru(a) => Key::Ru(a.to_string()),
Lookup::Ra(a) => Key::Ra(a.to_string()),
Lookup::Rg(a, b) => Key::Rg(a.to_string(), b.to_string()),
Lookup::NsByName(a) => Key::NsByName(a.to_string()),
Lookup::Nu(a, b) => Key::Nu(a, b.to_string()),
Lookup::Na(a, b) => Key::Na(a, b.to_string()),
Lookup::Ng(a, b, c) => Key::Ng(a, b.to_string(), c.to_string()),
Lookup::DbByName(a, b) => Key::DbByName(a.to_string(), b.to_string()),
Lookup::Du(a, b, c) => Key::Du(a, b, c.to_string()),
Lookup::Da(a, b, c) => Key::Da(a, b, c.to_string()),
Lookup::Dg(a, b, c, d) => Key::Dg(a, b, c.to_string(), d.to_string()),
Lookup::Ap(a, b, c) => Key::Ap(a, b, c.to_string()),
Lookup::Az(a, b, c) => Key::Az(a, b, c.to_string()),
Lookup::Bu(a, b, c) => Key::Bu(a, b, c.to_string()),
Lookup::Fc(a, b, c) => Key::Fc(a, b, c.to_string()),
Lookup::Md(a, b, c) => Key::Md(a, b, c.to_string()),
Lookup::Ml(a, b, c, d) => Key::Ml(a, b, c.to_string(), d.to_string()),
Lookup::Cg(a, b, c) => Key::Cg(a, b, c.to_string()),
Lookup::Pa(a, b, c) => Key::Pa(a, b, c.to_string()),
Lookup::Sq(a, b,c) => Key::Sq(a, b, c.to_string()),
Lookup::Tb(a, b, c) => Key::Tb(a, b, c.to_string()),
Lookup::TbByName(a, b, c) => Key::TbByName(a.to_string(), b.to_string(), c.to_string()),
Lookup::Ev(a, b, c, d) => Key::Ev(a, b, c.to_string(), d.to_string()),
Lookup::Fd(a, b, c, d) => Key::Fd(a, b, c.to_string(), d.to_string()),
Lookup::Ix(a, b, c, d) => Key::Ix(a, b, c.to_string(), d.to_string()),
Lookup::Record(a, b, c, d) => Key::Record(a, b, c.to_string(), d.to_owned()),
}
}
}