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 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,
|
||||||
|
}
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
Reference in New Issue
Block a user