feat: v1.0.4, generate data key and save to db
This commit is contained in:
18
src/db.rs
18
src/db.rs
@@ -9,10 +9,14 @@ pub struct Key {
|
||||
pub comment: Option<String>,
|
||||
}
|
||||
|
||||
pub fn make_db_key_name(name: &str) -> String {
|
||||
pub fn make_value_key_name(name: &str) -> String {
|
||||
format!("value:{}", name)
|
||||
}
|
||||
|
||||
pub fn make_data_key_name(name: &str) -> String {
|
||||
format!("data_key:{}", name)
|
||||
}
|
||||
|
||||
pub fn open_db(db: &str) -> XResult<Connection> {
|
||||
let con = opt_result!(Connection::open(db), "Open sqlite db: {}, failed: {}", db);
|
||||
log::debug!("Db auto commit: {}", con.is_autocommit());
|
||||
@@ -42,6 +46,7 @@ pub fn init_db(conn: &Connection) -> XResult<bool> {
|
||||
|
||||
pub fn insert_key(conn: &Connection, key: &Key) -> XResult<()> {
|
||||
let default_comment = "".to_string();
|
||||
log::debug!("insert key name={}", &key.name);
|
||||
let _ = conn.execute(
|
||||
"INSERT INTO keys (name, value, comment) VALUES (?1, ?2, ?3)",
|
||||
(&key.name, &key.encrypted_key, key.comment.as_ref().unwrap_or(&default_comment)),
|
||||
@@ -50,6 +55,7 @@ pub fn insert_key(conn: &Connection, key: &Key) -> XResult<()> {
|
||||
}
|
||||
|
||||
pub fn update_key(conn: &Connection, key: &Key) -> XResult<()> {
|
||||
log::debug!("update key name={}", &key.name);
|
||||
if let Some(comment) = &key.comment {
|
||||
let _ = conn.execute(
|
||||
"UPDATE keys SET value = ?1, comment = ?2 WHERE name = ?3",
|
||||
@@ -74,8 +80,14 @@ pub fn find_key(conn: &Connection, name: &str) -> XResult<Option<Key>> {
|
||||
})
|
||||
})?;
|
||||
match key_iter.next() {
|
||||
None => Ok(None),
|
||||
Some(Ok(r)) => Ok(Some(r)),
|
||||
None => {
|
||||
log::debug!("key name={} not exists", name);
|
||||
Ok(None)
|
||||
}
|
||||
Some(Ok(r)) => {
|
||||
log::debug!("found key name={}", name);
|
||||
Ok(Some(r))
|
||||
}
|
||||
Some(Err(e)) => simple_error!("Find key failed: {}", e),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user