X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=backend%2Fsrc%2Fdb.rs;h=6458c7eb7308d384a695f7af38893d0c0e2fb821;hb=eab43f8995eff5b8a4f6c4ded6a655866feddedb;hp=0002b41ecb7fd5167e3fef305cf4b604a1d92dd9;hpb=c012be04a9185ab5924cb314e0378c0cf6655b26;p=recipes.git diff --git a/backend/src/db.rs b/backend/src/db.rs index 0002b41..6458c7e 100644 --- a/backend/src/db.rs +++ b/backend/src/db.rs @@ -1,6 +1,48 @@ +use std::path::Path; +use std::fs; +//use rusqlite::types::ToSql; +//use rusqlite::{Connection, Result, NO_PARAMS}; +const CURRENT_DB_VERSION: u32 = 1; -fn create_or_update() { +pub struct Connection { + con: rusqlite::Connection +} +impl Connection { + pub fn new() -> Connection { + + // TODO: use a constant in consts module. + let data_dir = Path::new("data"); + + if !data_dir.exists() { + fs::DirBuilder::new().create(data_dir).unwrap(); + } + + Connection { con: rusqlite::Connection::open(data_dir.join("recipes.sqlite")).unwrap() } + } + + pub fn create_or_update(self: &Self) -> rusqlite::Result<&str> { + //let connection = Connection::new(); + // let mut stmt = connection.sqlite_con.prepare("SELECT * FROM versions ORDER BY date").unwrap(); + // let mut stmt = connection.sqlite_con..prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='versions'").unwrap(); + + // Check the Database version. + let version = { + let stmt_version_table = self.con.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='versions'")?; + /*if stmt_version_table.query(rusqlite::NO_PARAMS)?.count() == 0 { + 0 + } else { + 1 // let stmt_versions = self.con.prepare("SELECT number FROM [") + }*/ + 0 + }; + + self.con.query_row( + "SELECT name FROM sqlite_master WHERE type='table' AND name='versions'", + rusqlite::NO_PARAMS, + |row| Ok(dbg!("test")) + ) + } } \ No newline at end of file