refactor: remove ToEAV trait in favor of Into<Entity>
This commit is contained in:
@@ -11,10 +11,10 @@ pub mod string_from_value;
|
|||||||
// pub mod string_to_value;
|
// pub mod string_to_value;
|
||||||
pub mod u64_from_value;
|
pub mod u64_from_value;
|
||||||
// pub mod u64_to_value;
|
// pub mod u64_to_value;
|
||||||
|
pub mod value_from_bool;
|
||||||
|
pub mod value_from_entity;
|
||||||
|
pub mod value_from_f64;
|
||||||
|
pub mod value_from_i64;
|
||||||
pub mod value_from_str;
|
pub mod value_from_str;
|
||||||
pub mod value_from_string;
|
pub mod value_from_string;
|
||||||
pub mod value_from_u64;
|
pub mod value_from_u64;
|
||||||
pub mod value_from_f64;
|
|
||||||
pub mod value_from_bool;
|
|
||||||
pub mod value_from_entity;
|
|
||||||
pub mod value_from_i64;
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ pub use crate::str::catalog::O as Catalog;
|
|||||||
pub use crate::str::entity::O as Entity;
|
pub use crate::str::entity::O as Entity;
|
||||||
pub use crate::str::value::E as Value;
|
pub use crate::str::value::E as Value;
|
||||||
pub use crate::trt::eav::T as EAV;
|
pub use crate::trt::eav::T as EAV;
|
||||||
pub use crate::trt::to_eav::T as ToEAV;
|
|
||||||
|
|
||||||
mod sqlite {
|
mod sqlite {
|
||||||
pub mod init {
|
pub mod init {
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ impl O {
|
|||||||
sqlite::init::db(path);
|
sqlite::init::db(path);
|
||||||
}
|
}
|
||||||
pub fn insert(&mut self, object: impl EAV) {
|
pub fn insert(&mut self, object: impl EAV) {
|
||||||
let entity = object.to_eav();
|
let entity = object.into();
|
||||||
self.items.insert(entity.id.clone(), entity);
|
self.items.insert(entity.id.clone(), entity);
|
||||||
}
|
}
|
||||||
pub fn insert_many(&mut self, objects: Vec<impl EAV>) {
|
pub fn insert_many(&mut self, objects: Vec<impl EAV>) {
|
||||||
for object in objects {
|
for object in objects {
|
||||||
let entity = object.to_eav();
|
let entity = object.into();
|
||||||
self.items.insert(entity.id.clone(), entity);
|
self.items.insert(entity.id.clone(), entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,12 +9,6 @@ pub struct O {
|
|||||||
|
|
||||||
impl EAV for Entity {}
|
impl EAV for Entity {}
|
||||||
|
|
||||||
impl ToEAV for Entity {
|
|
||||||
fn to_eav(self) -> Entity {
|
|
||||||
self
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl O {
|
impl O {
|
||||||
pub fn new(class: &str) -> Self {
|
pub fn new(class: &str) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use crate::*;
|
|||||||
/// TODO: INSERT DOCUMENTATION HERE
|
/// TODO: INSERT DOCUMENTATION HERE
|
||||||
pub trait T where
|
pub trait T where
|
||||||
Self: From<Entity>,
|
Self: From<Entity>,
|
||||||
Self: ToEAV,
|
Self: Into<Entity>,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
pub mod eav;
|
pub mod eav;
|
||||||
pub mod to_eav;
|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
use crate::*;
|
|
||||||
|
|
||||||
pub trait T {
|
|
||||||
fn to_eav(self) -> Entity;
|
|
||||||
}
|
|
||||||
@@ -8,13 +8,13 @@ mod tests {
|
|||||||
pub price: u64,
|
pub price: u64,
|
||||||
}
|
}
|
||||||
impl EAV for Product {}
|
impl EAV for Product {}
|
||||||
impl ToEAV for Product {
|
impl From<Product> for Entity {
|
||||||
fn to_eav(self) -> Entity {
|
fn from(value: Product) -> Entity {
|
||||||
Entity::default()
|
Entity::default()
|
||||||
.with_class("product")
|
.with_class("product")
|
||||||
.with_id(&self.id)
|
.with_id(&value.id)
|
||||||
.with_attribute("name", self.name)
|
.with_attribute("name", value.name)
|
||||||
.with_attribute("price", self.price)
|
.with_attribute("price", value.price)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl From<Entity> for Product {
|
impl From<Entity> for Product {
|
||||||
@@ -118,7 +118,7 @@ mod tests {
|
|||||||
price: 200000u64,
|
price: 200000u64,
|
||||||
};
|
};
|
||||||
let expected_product = product.clone();
|
let expected_product = product.clone();
|
||||||
let entity = product.to_eav();
|
let entity: Entity = product.into();
|
||||||
let converted_product = Product::from(entity);
|
let converted_product = Product::from(entity);
|
||||||
assert_eq!(expected_product, converted_product);
|
assert_eq!(expected_product, converted_product);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ mod tests {
|
|||||||
pub category_id: String,
|
pub category_id: String,
|
||||||
}
|
}
|
||||||
impl EAV for OperationToCategory {}
|
impl EAV for OperationToCategory {}
|
||||||
impl ToEAV for OperationToCategory {
|
impl From<OperationToCategory> for Entity {
|
||||||
fn to_eav(self) -> Entity {
|
fn from(value: OperationToCategory) -> Entity {
|
||||||
Entity::default()
|
Entity::default()
|
||||||
.with_class("operation_has_category")
|
.with_class("operation_has_category")
|
||||||
.with_id(&self.id)
|
.with_id(&value.id)
|
||||||
.with_attribute("operation_id", self.operation_id)
|
.with_attribute("operation_id", value.operation_id)
|
||||||
.with_attribute("category_id", self.category_id)
|
.with_attribute("category_id", value.category_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl From<Entity> for OperationToCategory {
|
impl From<Entity> for OperationToCategory {
|
||||||
@@ -38,12 +38,12 @@ mod tests {
|
|||||||
pub label: String,
|
pub label: String,
|
||||||
}
|
}
|
||||||
impl EAV for Category {}
|
impl EAV for Category {}
|
||||||
impl ToEAV for Category {
|
impl From<Category> for Entity {
|
||||||
fn to_eav(self) -> Entity {
|
fn from(value: Category) -> Entity {
|
||||||
Entity::default()
|
Entity::default()
|
||||||
.with_class("category")
|
.with_class("category")
|
||||||
.with_id(&self.id)
|
.with_id(&value.id)
|
||||||
.with_attribute("label", self.label)
|
.with_attribute("label", value.label)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl From<Entity> for Category {
|
impl From<Entity> for Category {
|
||||||
@@ -64,14 +64,14 @@ mod tests {
|
|||||||
pub description: String,
|
pub description: String,
|
||||||
}
|
}
|
||||||
impl EAV for Operation {}
|
impl EAV for Operation {}
|
||||||
impl ToEAV for Operation {
|
impl From<Operation> for Entity {
|
||||||
fn to_eav(self) -> Entity {
|
fn from(value: Operation) -> Entity {
|
||||||
Entity::default()
|
Entity::default()
|
||||||
.with_class("operation")
|
.with_class("operation")
|
||||||
.with_id(&self.id)
|
.with_id(&value.id)
|
||||||
.with_attribute("date", self.date)
|
.with_attribute("date", value.date)
|
||||||
.with_attribute("amount", self.amount)
|
.with_attribute("amount", value.amount)
|
||||||
.with_attribute("description", self.description)
|
.with_attribute("description", value.description)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl From<Entity> for Operation {
|
impl From<Entity> for Operation {
|
||||||
|
|||||||
Reference in New Issue
Block a user