refactor: moved get_template into new impl for wgu::types::ObjectTemplate
This commit is contained in:
parent
3342ef5332
commit
226b880fb6
1 changed files with 14 additions and 12 deletions
|
|
@ -6,16 +6,18 @@ use crate::types::{ObjectInstance, ObjectTemplate};
|
|||
|
||||
use serde_json::{Value, json};
|
||||
|
||||
fn get_template(object_type: &str) -> Result<ObjectTemplate, String> {
|
||||
let modules = item_registry();
|
||||
|
||||
let template: ObjectTemplate = match modules.get(object_type) {
|
||||
Some(ModuleItem::Template(template_str)) => toml::from_str(template_str).unwrap(),
|
||||
Some(_) => panic!("{} is not a ModuleItem::Template", object_type),
|
||||
None => return Err(format!("template {} doesn't exist", object_type))
|
||||
};
|
||||
|
||||
Ok(template)
|
||||
impl ObjectTemplate {
|
||||
fn from_object_type(object_type: &str) -> Result<ObjectTemplate, String> {
|
||||
let modules = item_registry();
|
||||
|
||||
let template: ObjectTemplate = match modules.get(object_type) {
|
||||
Some(ModuleItem::Template(template_str)) => toml::from_str(template_str).unwrap(),
|
||||
Some(_) => panic!("{} is not a ModuleItem::Template", object_type),
|
||||
None => return Err(format!("template {} doesn't exist", object_type))
|
||||
};
|
||||
|
||||
Ok(template)
|
||||
}
|
||||
}
|
||||
|
||||
impl ObjectInstance {
|
||||
|
|
@ -33,7 +35,7 @@ impl ObjectInstance {
|
|||
pub fn validate(obj: &ObjectInstance) -> Result<(), String> {
|
||||
let modules = item_registry();
|
||||
let object_type = &obj.object_type;
|
||||
let template = get_template(object_type)?;
|
||||
let template = ObjectTemplate::from_object_type(object_type)?;
|
||||
|
||||
match modules.get(format!("{}:func:validator", object_type).as_str()) {
|
||||
Some(ModuleItem::Validator(validate)) => validate(&obj)?,
|
||||
|
|
@ -66,7 +68,7 @@ impl ObjectInstance {
|
|||
|
||||
pub fn transform(obj: &ObjectInstance, source: &str, destination: &str) -> Result<Self, String> {
|
||||
let object_type = &obj.object_type;
|
||||
let template = get_template(object_type)?;
|
||||
let template = ObjectTemplate::from_object_type(object_type)?;
|
||||
|
||||
// assuming that the property to transform (source) is 'input.some.thing.nya',
|
||||
// source_parts[0] is the category (input)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue