Abstract database behind generic interface and implement alternative drivers #322

Merged
lx merged 64 commits from db-abstraction into main 2022-06-08 08:01:56 +00:00
Showing only changes of commit 48928d2d70 - Show all commits

View file

@ -154,22 +154,12 @@ impl IDb for SqliteDb {
let tree = this.get_tree(tree)?; let tree = this.get_tree(tree)?;
let old_val = this.internal_get(tree, key)?; let old_val = this.internal_get(tree, key)?;
match &old_val { let sql = match &old_val {
Some(_) => { Some(_) => format!("UPDATE {} SET v = ?2 WHERE k = ?1", tree),
let n = this.db.execute( None => format!("INSERT INTO {} (k, v) VALUES (?1, ?2)", tree),
&format!("UPDATE {} SET v = ?2 WHERE k = ?1", tree), };
params![key, value], let n = this.db.execute(&sql, params![key, value])?;
)?;
assert_eq!(n, 1); assert_eq!(n, 1);
}
None => {
let n = this.db.execute(
&format!("INSERT INTO {} (k, v) VALUES (?1, ?2)", tree),
params![key, value],
)?;
assert_eq!(n, 1);
}
}
Ok(old_val) Ok(old_val)
} }
@ -343,22 +333,12 @@ impl<'a> ITx for SqliteTx<'a> {
let tree = self.get_tree(tree)?; let tree = self.get_tree(tree)?;
let old_val = self.internal_get(tree, key)?; let old_val = self.internal_get(tree, key)?;
match &old_val { let sql = match &old_val {
Some(_) => { Some(_) => format!("UPDATE {} SET v = ?2 WHERE k = ?1", tree),
let n = self.tx.execute( None => format!("INSERT INTO {} (k, v) VALUES (?1, ?2)", tree),
&format!("UPDATE {} SET v = ?2 WHERE k = ?1", tree), };
params![key, value], let n = self.tx.execute(&sql, params![key, value])?;
)?;
assert_eq!(n, 1); assert_eq!(n, 1);
}
None => {
let n = self.tx.execute(
&format!("INSERT INTO {} (k, v) VALUES (?1, ?2)", tree),
params![key, value],
)?;
assert_eq!(n, 1);
}
}
Ok(old_val) Ok(old_val)
} }