dfgd
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
[package]
|
||||
name = "yopa-test"
|
||||
version = "0.1.0"
|
||||
authors = ["Ondřej Hruška <ondra@ondrovo.com>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.13"
|
||||
simple-logging = "2.0.2"
|
||||
|
||||
yopa = { path = "../yopa", features = [ "uuid-ids" ] }
|
||||
|
||||
serde_json = "1.0.61"
|
||||
serde = { version = "1.0.120", features = ["derive"] }
|
||||
|
||||
anyhow = "1.0.38"
|
||||
thiserror = "1.0.23"
|
||||
@@ -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