Beginning of data persistence module.

This commit is contained in:
Grégory Burri 2019-08-29 14:03:24 +02:00
parent c012be04a9
commit 87bc628b56
3 changed files with 42 additions and 2 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
target target
**/*.rs.bk **/*.rs.bk
backend/data/recipes.sqlite

View file

@ -1,6 +1,39 @@
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() { struct Connection {
pub sqlite_con : rusqlite::Connection
}
impl Connection {
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 { sqlite_con : rusqlite::Connection::open(data_dir.join("recipes.sqlite")).unwrap() }
}
}
pub fn create_or_update() {
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();
connection.sqlite_con.query_row(
"SELECT name FROM sqlite_master WHERE type='table' AND name='versions'",
rusqlite::NO_PARAMS,
|row| Ok(dbg!("test"))
)
.unwrap();
} }

View file

@ -15,6 +15,7 @@ use std::{fs::File, env::args};
use itertools::Itertools; use itertools::Itertools;
mod consts; mod consts;
mod db;
#[derive(Template)] #[derive(Template)]
#[template(path = "main.html")] #[template(path = "main.html")]
@ -61,6 +62,8 @@ fn main() -> std::io::Result<()> {
println!("Configuration: {:?}", config); println!("Configuration: {:?}", config);
let database_connection = db::create_or_update();
let mut listenfd = ListenFd::from_env(); let mut listenfd = ListenFd::from_env();
let mut server = let mut server =
HttpServer::new( HttpServer::new(
@ -86,7 +89,7 @@ fn main() -> std::io::Result<()> {
fn process_args() -> bool { fn process_args() -> bool {
fn print_usage() { fn print_usage() {
println!("Usage:"); println!("Usage:");
println!(" {} [--help]", get_exe_name()); println!(" {} [--help] [--test]", get_exe_name());
} }
let args: Vec<String> = args().collect(); let args: Vec<String> = args().collect();
@ -94,6 +97,9 @@ fn process_args() -> bool {
if args.iter().any(|arg| arg == "--help") { if args.iter().any(|arg| arg == "--help") {
print_usage(); print_usage();
return true return true
} else if args.iter().any(|arg| arg == "--test") {
let database_connection = db::create_or_update();
return true
} }
false false