fix: store last_memo

This commit is contained in:
əlemi 2022-12-16 02:25:27 +01:00
parent 6ec8ad3ab5
commit c5c5082972
No known key found for this signature in database
GPG key ID: BBCBFE5D7244634E
2 changed files with 17 additions and 1 deletions

View file

@ -3,6 +3,7 @@ use std::io::BufReader;
use std::path::PathBuf; use std::path::PathBuf;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use serde::{Serialize, Deserialize}; use serde::{Serialize, Deserialize};
use uuid::Uuid;
use std::io::Write; use std::io::Write;
// use sha2::{Digest, Sha512}; // use sha2::{Digest, Sha512};
use std::collections::LinkedList; use std::collections::LinkedList;
@ -22,6 +23,7 @@ struct Store {
hash: String, hash: String,
last_sync: Option<DateTime<Utc>>, last_sync: Option<DateTime<Utc>>,
last_edit: DateTime<Utc>, last_edit: DateTime<Utc>,
last_memo: Option<Uuid>,
memo: Vec<Memo>, memo: Vec<Memo>,
} }
@ -32,6 +34,7 @@ impl Default for Store {
hash: "".to_string(), hash: "".to_string(),
last_sync: None, last_sync: None,
last_edit: Utc::now(), last_edit: Utc::now(),
last_memo: None,
memo: Vec::new(), memo: Vec::new(),
}; };
} }
@ -86,7 +89,7 @@ impl StorageDriver for JsonStorage {
Context { Context {
last_edit: self.data.last_edit, last_edit: self.data.last_edit,
last_sync: self.data.last_sync, last_sync: self.data.last_sync,
last_memo: None, // TODO last_memo: self.data.last_memo,
} }
); );
} }
@ -116,6 +119,7 @@ impl StorageDriver for JsonStorage {
fn put(&mut self, m: Memo) -> Result<(), MemoError> { fn put(&mut self, m: Memo) -> Result<(), MemoError> {
self.data.memo.retain(|x| x.id != m.id); self.data.memo.retain(|x| x.id != m.id);
self.data.last_memo = Some(m.id.clone());
self.data.memo.push(m); self.data.memo.push(m);
self.data.last_edit = Utc::now(); self.data.last_edit = Utc::now();
self.save()?; self.save()?;

View file

@ -89,12 +89,23 @@ impl SQLiteStorage {
// } // }
// } // }
/// ugly but idk
fn uuid_from_row(txt: Option<String>) -> Option<Uuid> {
match txt {
Some(txt) => {
Uuid::parse_str(&txt).ok()
},
None => None,
}
}
impl StorageDriver for SQLiteStorage { impl StorageDriver for SQLiteStorage {
fn ctx(&self) -> Result<Context, MemoError> { fn ctx(&self) -> Result<Context, MemoError> {
return Ok(self.conn.query_row("SELECT * FROM state", [], |row| { return Ok(self.conn.query_row("SELECT * FROM state", [], |row| {
return Ok(Context { return Ok(Context {
last_edit: row.get(0)?, last_edit: row.get(0)?,
last_sync: row.get(1).ok(), last_sync: row.get(1).ok(),
last_memo: uuid_from_row(row.get(2).ok()),
..Default::default() ..Default::default()
}); });
})?); })?);
@ -140,6 +151,7 @@ impl StorageDriver for SQLiteStorage {
params![m.id.to_string(), m.tag, m.body, m.due, m.done, m.last_edit], params![m.id.to_string(), m.tag, m.body, m.due, m.done, m.last_edit],
)?; )?;
tx.execute("UPDATE state SET last_edit = ?", params![Utc::now()])?; tx.execute("UPDATE state SET last_edit = ?", params![Utc::now()])?;
tx.execute("UPDATE state SET last_memo = ?", params![m.id.to_string()])?;
tx.commit()?; tx.commit()?;
Ok(()) Ok(())
} }