feat: add ref_date field to entity
This commit is contained in:
@@ -5,7 +5,8 @@ pub fn run(path: &path::Path) {
|
|||||||
let init_statement = r#"
|
let init_statement = r#"
|
||||||
CREATE TABLE IF NOT EXISTS entity (
|
CREATE TABLE IF NOT EXISTS entity (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
class TEXT NOT NULL
|
class TEXT NOT NULL,
|
||||||
|
ref_date INTEGER NOT NULL
|
||||||
);
|
);
|
||||||
CREATE TABLE IF NOT EXISTS attribute (
|
CREATE TABLE IF NOT EXISTS attribute (
|
||||||
id TEXT,
|
id TEXT,
|
||||||
|
|||||||
@@ -3,7 +3,11 @@ use crate::*;
|
|||||||
pub fn run(row: &rusqlite::Row) -> rusqlite::Result<Entity> {
|
pub fn run(row: &rusqlite::Row) -> rusqlite::Result<Entity> {
|
||||||
let id: String = row.get(0)?;
|
let id: String = row.get(0)?;
|
||||||
let class: String = row.get(1)?;
|
let class: String = row.get(1)?;
|
||||||
Ok(Entity::default().with_id(&id).with_class(&class))
|
let ref_date: u64 = row.get(2)?;
|
||||||
|
Ok(Entity::default()
|
||||||
|
.with_id(&id)
|
||||||
|
.with_class(&class)
|
||||||
|
.with_ref_date(ref_date))
|
||||||
}
|
}
|
||||||
|
|
||||||
// #[cfg(test)]
|
// #[cfg(test)]
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ const DELETE_ENTITY_STATEMENT: &str = r#"
|
|||||||
"#;
|
"#;
|
||||||
|
|
||||||
const INSERT_ENTITY_STATEMENT: &str = r#"
|
const INSERT_ENTITY_STATEMENT: &str = r#"
|
||||||
INSERT INTO entity (id, class)
|
INSERT INTO entity (id, class, ref_date)
|
||||||
VALUES (?1, ?2);
|
VALUES (?1, ?2, ?3);
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
const INSERT_ATTRIBUTE_STATEMENT_TEMPLATE: &str = r#"
|
const INSERT_ATTRIBUTE_STATEMENT_TEMPLATE: &str = r#"
|
||||||
@@ -36,7 +36,7 @@ fn write_attribute(attribute: &Attribute, entity: &Entity, transaction: &rusqlit
|
|||||||
|
|
||||||
fn write_entity(entity: &Entity, transaction: &rusqlite::Transaction) {
|
fn write_entity(entity: &Entity, transaction: &rusqlite::Transaction) {
|
||||||
let entity_id = [&entity.id];
|
let entity_id = [&entity.id];
|
||||||
let entity_values = (&entity.id, &entity.class);
|
let entity_values = (&entity.id, &entity.class, entity.ref_date);
|
||||||
let _ = transaction.execute(DELETE_ENTITY_STATEMENT, entity_id);
|
let _ = transaction.execute(DELETE_ENTITY_STATEMENT, entity_id);
|
||||||
let _ = transaction.execute(INSERT_ENTITY_STATEMENT, entity_values);
|
let _ = transaction.execute(INSERT_ENTITY_STATEMENT, entity_values);
|
||||||
for (_key, attribute) in entity.attributes.iter() {
|
for (_key, attribute) in entity.attributes.iter() {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ use crate::*;
|
|||||||
pub struct O {
|
pub struct O {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
pub state: EntityState,
|
pub state: EntityState,
|
||||||
|
pub ref_date: u64,
|
||||||
pub class: String,
|
pub class: String,
|
||||||
pub attributes: std::collections::HashMap<String, Attribute>,
|
pub attributes: std::collections::HashMap<String, Attribute>,
|
||||||
}
|
}
|
||||||
@@ -26,6 +27,10 @@ impl O {
|
|||||||
self.class = class.to_string();
|
self.class = class.to_string();
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
pub fn with_ref_date(mut self, ref_date: u64) -> Self {
|
||||||
|
self.ref_date = ref_date;
|
||||||
|
self
|
||||||
|
}
|
||||||
pub fn with_attribute(mut self, id: &str, value: impl Into<Value>) -> Self {
|
pub fn with_attribute(mut self, id: &str, value: impl Into<Value>) -> Self {
|
||||||
let attribute = Attribute::new(id, value);
|
let attribute = Attribute::new(id, value);
|
||||||
self.attributes.insert(attribute.id.clone(), attribute);
|
self.attributes.insert(attribute.id.clone(), attribute);
|
||||||
|
|||||||
Reference in New Issue
Block a user