dfgd
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
#[macro_use] extern crate log;
|
||||
|
||||
use log::LevelFilter;
|
||||
|
||||
use yopa::{model, InMemoryStorage};
|
||||
use yopa::model::DataType;
|
||||
use yopa::insert::{InsertObj, InsertValue, InsertRel};
|
||||
use yopa::data::TypedValue;
|
||||
|
||||
fn main() {
|
||||
simple_logging::log_to_stderr(LevelFilter::Debug);
|
||||
|
||||
main_test_recipes().unwrap();
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
fn main_test_recipes() -> anyhow::Result<()> {
|
||||
simple_logging::log_to_stderr(LevelFilter::Debug);
|
||||
|
||||
let mut store = yopa::InMemoryStorage::new();
|
||||
|
||||
let Recipe = store.define_object(model::ObjectModel {
|
||||
id: Default::default(),
|
||||
name: "recipe".to_string(),
|
||||
parent: None
|
||||
})?;
|
||||
|
||||
let RecipeTitle = store.define_property(model::PropertyModel {
|
||||
id: Default::default(),
|
||||
object: Recipe,
|
||||
name: "title".to_string(),
|
||||
optional: false,
|
||||
multiple: false,
|
||||
data_type: DataType::String,
|
||||
default: None
|
||||
})?;
|
||||
|
||||
let _PrepHours = store.define_property(model::PropertyModel {
|
||||
id: Default::default(),
|
||||
object: Recipe,
|
||||
name: "prep_hours".to_string(),
|
||||
optional: true,
|
||||
multiple: false,
|
||||
data_type: DataType::Decimal,
|
||||
default: None
|
||||
})?;
|
||||
|
||||
let Book = store.define_object(model::ObjectModel {
|
||||
id: Default::default(),
|
||||
name: "book".to_string(),
|
||||
parent: None
|
||||
})?;
|
||||
|
||||
let BookName = store.define_property(model::PropertyModel {
|
||||
id: Default::default(),
|
||||
object: Book,
|
||||
name: "name".to_string(),
|
||||
optional: false,
|
||||
multiple: false,
|
||||
data_type: DataType::String,
|
||||
default: None
|
||||
})?;
|
||||
|
||||
let BookToRecipe = store.define_relation(model::RelationModel {
|
||||
id: Default::default(),
|
||||
object: Recipe,
|
||||
name: "book reference".to_string(),
|
||||
optional: true,
|
||||
multiple: true,
|
||||
related: Book
|
||||
})?;
|
||||
|
||||
let BookToRecipePage = store.define_property(model::PropertyModel {
|
||||
id: Default::default(),
|
||||
object: BookToRecipe,
|
||||
name: "page".to_string(),
|
||||
optional: false,
|
||||
multiple: false,
|
||||
data_type: DataType::Integer,
|
||||
default: None
|
||||
})?;
|
||||
|
||||
debug!("{:#?}", store);
|
||||
|
||||
let MyBook1 = store.insert_object(InsertObj {
|
||||
model_id: Book,
|
||||
values: vec![
|
||||
InsertValue::new(BookName, TypedValue::String("Recipe Book 1".into())),
|
||||
],
|
||||
relations: vec![],
|
||||
})?;
|
||||
|
||||
store.insert_object(InsertObj {
|
||||
model_id: Recipe,
|
||||
values: vec![
|
||||
InsertValue::new(RecipeTitle, TypedValue::String("Pancakes".into())),
|
||||
],
|
||||
relations: vec![
|
||||
InsertRel {
|
||||
model_id: BookToRecipe,
|
||||
related_id: MyBook1,
|
||||
values: vec![
|
||||
InsertValue::new(BookToRecipePage, TypedValue::Integer(123))
|
||||
]
|
||||
}
|
||||
],
|
||||
})?;
|
||||
|
||||
debug!("{:#?}", store);
|
||||
|
||||
let as_s = serde_json::to_string_pretty(&store).unwrap();
|
||||
|
||||
println!("{}", as_s);
|
||||
|
||||
let _back : InMemoryStorage = serde_json::from_str(&as_s)?;
|
||||
|
||||
debug!("After unpack: {:#?}", store);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user