use crate::{
Ident,
database::{
DynPartition,
PartitionKey,
},
};
pub struct Workspace;
impl PartitionKey for Workspace {
const KEY: Ident = Ident::new("laburnum::workspace");
}
impl DynPartition for Workspace {
type DynSortKey = WorkspaceSortKey;
type RecordConstraint = dyn WorkspaceRecord;
}
impl<R: WorkspaceRecord + crate::record::Record>
crate::database::DynPartitionRecord<Workspace> for R
{
}
#[derive(Debug, Clone)]
pub enum WorkspaceSortKey {
Config,
All,
}
impl std::fmt::Display for WorkspaceSortKey {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
| WorkspaceSortKey::Config => write!(f, "config"),
| WorkspaceSortKey::All => Ok(()),
}
}
}
pub trait WorkspaceRecord: Send + Sync + std::fmt::Debug {}