Added features to document definition.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
2026-03-21 08:50:47 -04:00
parent 5ec1330a73
commit 8a8006c521
2 changed files with 36 additions and 1 deletions

View File

@@ -13,3 +13,8 @@ pub use definition::{DocDef, DocFuncType};
pub use field::{Field, FieldType, MissingTranslation}; pub use field::{Field, FieldType, MissingTranslation};
pub use record::{Record, Records}; pub use record::{Record, Records};
pub use session::Session; pub use session::Session;
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
enum DocFeature {
System,
}

View File

@@ -1,3 +1,4 @@
use super::DocFeature;
use crate::{ use crate::{
action::{Action, CalcValue, Field, FieldType, MsgAction}, action::{Action, CalcValue, Field, FieldType, MsgAction},
document::create::IndexType, document::create::IndexType,
@@ -215,6 +216,7 @@ impl PathAction {
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct DocDef { pub struct DocDef {
doc_names: Vec<Name>, doc_names: Vec<Name>,
features: HashSet<DocFeature>,
field_names: Names, field_names: Names,
fields: HashMap<NameID, FieldSetting>, fields: HashMap<NameID, FieldSetting>,
indexes: HashMap<NameID, IndexType>, indexes: HashMap<NameID, IndexType>,
@@ -227,7 +229,22 @@ impl DocDef {
Self::with_names(names) Self::with_names(names)
} }
pub fn system(name: Name) -> Self {
let names = vec![name];
Self::system_with_names(names)
}
pub fn system_with_names(names: Vec<Name>) -> Self {
let mut features = HashSet::new();
features.insert(DocFeature::System);
Self::create(names, features)
}
pub fn with_names(names: Vec<Name>) -> Self { pub fn with_names(names: Vec<Name>) -> Self {
Self::create(names, HashSet::new())
}
fn create(names: Vec<Name>, features: HashSet<DocFeature>) -> Self {
let routes = vec![ let routes = vec![
PathAction::new( PathAction::new(
Path::new( Path::new(
@@ -272,6 +289,7 @@ impl DocDef {
]; ];
Self { Self {
doc_names: names, doc_names: names,
features: features,
field_names: Names::new(), field_names: Names::new(),
fields: HashMap::new(), fields: HashMap::new(),
indexes: HashMap::new(), indexes: HashMap::new(),
@@ -406,10 +424,22 @@ mod docdefs {
use crate::action::{Query, Update}; use crate::action::{Query, Update};
#[test] #[test]
fn message_doc_name_returns_none() { fn can_create_document_definition() {
let docname = Name::english("tester"); let docname = Name::english("tester");
let mut docdef = DocDef::new(docname); let mut docdef = DocDef::new(docname);
assert_eq!(docdef.doc_name(), &NameType::None); assert_eq!(docdef.doc_name(), &NameType::None);
assert!(
docdef.features.is_empty(),
"should not have special features"
);
}
#[test]
fn can_create_system_document_definition() {
let docname = Name::english("system");
let mut docdef = DocDef::system(docname);
assert_eq!(docdef.features.len(), 1);
assert_eq!(docdef.features.iter().last().unwrap(), &DocFeature::System);
} }
#[test] #[test]