aboutsummaryrefslogtreecommitdiff
path: root/src/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/database.rs')
-rw-r--r--src/database.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/database.rs b/src/database.rs
index a1d0a18..de77f95 100644
--- a/src/database.rs
+++ b/src/database.rs
@@ -1,22 +1,22 @@
use anyhow::Result;
use rusqlite::{Connection, Transaction, config::DbConfig};
-const DB_NAME: &str = "database.sqlite";
+pub const DB_NAME: &str = "database.sqlite";
const DB_VERSION: i64 = 0;
-struct Database {
+pub struct Database {
conn: Connection,
}
impl Database {
- fn new() -> Result<Self> {
+ pub fn new(db_file: &str) -> Result<Self> {
let mut init = false;
- if !std::fs::exists(DB_NAME)? {
+ if !std::fs::exists(db_file)? {
init = true;
}
let mut db = Database {
- conn: Connection::open(DB_NAME)?,
+ conn: Connection::open(db_file)?,
};
if init {
db.initialize()?;
@@ -35,7 +35,7 @@ impl Database {
tx.execute(q, ())?;
q = "INSERT INTO version VALUES (?)";
- tx.execute(q, &[&DB_VERSION])?;
+ tx.execute(q, [&DB_VERSION])?;
q = "CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -61,7 +61,10 @@ impl Database {
Ok(())
}
- fn execute<Ex>(&mut self, q: Ex) -> Result<QueryResult<Ex::T>> where Ex: DBExecutable {
+ pub fn execute<Ex>(&mut self, q: Ex) -> Result<QueryResult<Ex::T>>
+ where
+ Ex: DBExecutable,
+ {
let tx = self.conn.transaction()?;
let ris = q.execute(&tx)?;
tx.commit()?;
@@ -74,7 +77,8 @@ pub trait DBExecutable {
fn execute(&self, tx: &Transaction) -> Result<QueryResult<Self::T>>;
}
+#[derive(Debug)]
pub enum QueryResult<T> {
Empty,
- Vec(Vec<T>)
+ Vec(Vec<T>),
}
XMR address: 854DmXNrxULU3ZFJVs4Wc8PFhbq29RhqHhY8W6cdWrtFN3qmooKyyeYPcDzZTNRxphhJ5UzASQfAdEMwSteVqymk28aLhqj