Beginning of data persistence module.
authorGrégory Burri <gregory.burri@matisa.ch>
Thu, 29 Aug 2019 12:03:24 +0000 (14:03 +0200)
committerGrégory Burri <gregory.burri@matisa.ch>
Thu, 29 Aug 2019 12:03:24 +0000 (14:03 +0200)
.gitignore
backend/src/db.rs
backend/src/main.rs

index 84a323e..ab8ddf5 100644 (file)
@@ -1,2 +1,3 @@
 target
 **/*.rs.bk
+backend/data/recipes.sqlite
index 0002b41..f3356d2 100644 (file)
@@ -1,6 +1,39 @@
+use std::path::Path;\r
+use std::fs;\r
 \r
+//use rusqlite::types::ToSql;\r
+//use rusqlite::{Connection, Result, NO_PARAMS};\r
 \r
+const CURRENT_DB_VERSION: u32 = 1;\r
 \r
-fn create_or_update() {\r
+struct Connection {\r
+    pub sqlite_con : rusqlite::Connection\r
+}\r
 \r
+impl Connection {\r
+    fn new() -> Connection {\r
+\r
+        // TODO: use a constant in consts module.\r
+        let data_dir = Path::new("data");\r
+\r
+        if !data_dir.exists() {\r
+            fs::DirBuilder::new().create(data_dir).unwrap();\r
+        }\r
+\r
+        Connection { sqlite_con : rusqlite::Connection::open(data_dir.join("recipes.sqlite")).unwrap() }\r
+    }\r
+}\r
+\r
+pub fn create_or_update() {\r
+    let connection = Connection::new();\r
+\r
+    // let mut stmt = connection.sqlite_con.prepare("SELECT * FROM versions ORDER BY date").unwrap();\r
+\r
+    //let mut stmt = connection.sqlite_con..prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='versions'").unwrap();\r
+    connection.sqlite_con.query_row(\r
+        "SELECT name FROM sqlite_master WHERE type='table' AND name='versions'",\r
+        rusqlite::NO_PARAMS,\r
+        |row| Ok(dbg!("test"))\r
+    )\r
+    .unwrap();\r
 }
\ No newline at end of file
index bc89ab8..fcb8e12 100644 (file)
@@ -15,6 +15,7 @@ use std::{fs::File, env::args};
 use itertools::Itertools;
 
 mod consts;
+mod db;
 
 #[derive(Template)]
 #[template(path = "main.html")]
@@ -61,6 +62,8 @@ fn main() -> std::io::Result<()> {
 
     println!("Configuration: {:?}", config);
 
+    let database_connection = db::create_or_update();
+
     let mut listenfd = ListenFd::from_env();
     let mut server =
         HttpServer::new(
@@ -86,7 +89,7 @@ fn main() -> std::io::Result<()> {
 fn process_args() -> bool {
     fn print_usage() {
         println!("Usage:");
-        println!(" {} [--help]", get_exe_name());
+        println!(" {} [--help] [--test]", get_exe_name());
     }
 
     let args: Vec<String> = args().collect();
@@ -94,6 +97,9 @@ fn process_args() -> bool {
     if args.iter().any(|arg| arg == "--help") {
         print_usage();
         return true
+    } else if args.iter().any(|arg| arg == "--test") {
+        let database_connection = db::create_or_update();
+        return true
     }
 
     false