Added features to document definition.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
@@ -13,3 +13,8 @@ pub use definition::{DocDef, DocFuncType};
|
||||
pub use field::{Field, FieldType, MissingTranslation};
|
||||
pub use record::{Record, Records};
|
||||
pub use session::Session;
|
||||
|
||||
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
|
||||
enum DocFeature {
|
||||
System,
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use super::DocFeature;
|
||||
use crate::{
|
||||
action::{Action, CalcValue, Field, FieldType, MsgAction},
|
||||
document::create::IndexType,
|
||||
@@ -215,6 +216,7 @@ impl PathAction {
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct DocDef {
|
||||
doc_names: Vec<Name>,
|
||||
features: HashSet<DocFeature>,
|
||||
field_names: Names,
|
||||
fields: HashMap<NameID, FieldSetting>,
|
||||
indexes: HashMap<NameID, IndexType>,
|
||||
@@ -227,7 +229,22 @@ impl DocDef {
|
||||
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 {
|
||||
Self::create(names, HashSet::new())
|
||||
}
|
||||
|
||||
fn create(names: Vec<Name>, features: HashSet<DocFeature>) -> Self {
|
||||
let routes = vec![
|
||||
PathAction::new(
|
||||
Path::new(
|
||||
@@ -272,6 +289,7 @@ impl DocDef {
|
||||
];
|
||||
Self {
|
||||
doc_names: names,
|
||||
features: features,
|
||||
field_names: Names::new(),
|
||||
fields: HashMap::new(),
|
||||
indexes: HashMap::new(),
|
||||
@@ -406,10 +424,22 @@ mod docdefs {
|
||||
use crate::action::{Query, Update};
|
||||
|
||||
#[test]
|
||||
fn message_doc_name_returns_none() {
|
||||
fn can_create_document_definition() {
|
||||
let docname = Name::english("tester");
|
||||
let mut docdef = DocDef::new(docname);
|
||||
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]
|
||||
|
||||
Reference in New Issue
Block a user