use super::model::{NdtTemplateSummary, NdtTemplateRecord, TemplateStatus};
#[derive(Debug, Clone, Default)]
pub struct TemplateFilter {
pub namespace: Option<String>,
pub status: Option<TemplateStatus>,
pub category: Option<String>,
pub tags: Vec<String>,
pub locale: Option<String>,
}
pub trait NdtRegistry {
type Error: std::error::Error + Send + Sync + 'static;
fn save(&mut self, record: &NdtTemplateRecord) -> Result<(), Self::Error>;
fn load(&self, id: &str, version: Option<u32>) -> Result<NdtTemplateRecord, Self::Error>;
fn load_by_slug(
&self,
namespace: &str,
slug: &str,
version: Option<u32>,
) -> Result<NdtTemplateRecord, Self::Error>;
fn list(&self, filter: TemplateFilter) -> Result<Vec<NdtTemplateSummary>, Self::Error>;
fn exists(&self, id: &str, version: Option<u32>) -> Result<bool, Self::Error>;
fn deprecate(&mut self, id: &str, version: u32) -> Result<(), Self::Error>;
fn archive(&mut self, id: &str, version: u32) -> Result<(), Self::Error>;
}