use crate::objects::blueprint::Blueprint;
use crate::objects::blueprint_folder::BlueprintFolder;
use crate::objects::entity::{Entity, EntityValue};
use crate::objects::entity_folder::EntityFolder;
use crate::objects::object::Object;
use crate::objects::property::{Property, PropertyScope, PropertyType};
use crate::objects::property_folder::PropertyFolder;
use crate::objects::property_settings::PropertySettings;
use crate::persistence::project::Project;
use crate::types::location::FolderPosition;
use std::collections::HashSet;
mod entity;
mod object;
mod project;
mod property;
const NAME: &'static str = "name";
const INFO: &'static str = "info";
fn new_blueprint(project: &Project) -> Blueprint {
Blueprint::new(
project.db.clone(),
None,
FolderPosition::EndOfFolder,
NAME,
INFO,
)
.expect("unable to create blueprint")
}
fn new_blueprint_folder(project: &Project) -> BlueprintFolder {
BlueprintFolder::new(
project.db.clone(),
None,
FolderPosition::EndOfFolder,
NAME,
INFO,
)
.expect("unable to create blueprint folder")
}
fn new_property(
project: &Project,
scope: PropertyScope,
property_type: PropertyType,
settings: Option<PropertySettings>,
default_value: Option<EntityValue>,
) -> Property {
Property::new(
project.db.clone(),
scope,
None,
FolderPosition::EndOfFolder,
NAME,
INFO,
property_type,
settings.unwrap_or(property_type.default_settings()),
default_value.unwrap_or(property_type.default_value()),
)
.expect("unable to create property")
}
fn new_property_folder(project: &Project, blueprint: Blueprint) -> PropertyFolder {
PropertyFolder::new(
project.db.clone(),
PropertyScope::Blueprint(blueprint.clone()),
None,
FolderPosition::EndOfFolder,
NAME,
INFO,
)
.expect("unable to create property folder")
}
fn new_entity(project: &Project, blueprints: HashSet<&Blueprint>) -> Entity {
Entity::new(
project.db.clone(),
blueprints,
None,
FolderPosition::EndOfFolder,
NAME,
INFO,
)
.expect("unable to create entity")
}
fn new_entity_folder(project: &Project) -> EntityFolder {
EntityFolder::new(
project.db.clone(),
None,
FolderPosition::EndOfFolder,
NAME,
INFO,
)
.expect("unable to create entity folder")
}
fn one_object_of_each_type(project: &Project) -> Vec<Object> {
let blueprint = new_blueprint(project);
vec![
blueprint.to_object(),
new_blueprint_folder(project).to_object(),
new_property(
project,
PropertyScope::Blueprint(blueprint.clone()),
PropertyType::Toggle,
None,
None,
)
.to_object(),
new_property_folder(project, blueprint.clone()).to_object(),
new_entity(project, HashSet::default()).to_object(),
new_entity_folder(project).to_object(),
]
}