X-Git-Url: http://git.euphorik.ch/?p=recipes.git;a=blobdiff_plain;f=backend%2Fsrc%2Fmain.rs;fp=backend%2Fsrc%2Fmain.rs;h=951fd782ce26bb9e0b9831a988eb74f7e7563f9f;hp=0d343413a4e754b25b33b55d20af4b400fb67260;hb=adcf4a5a5d982489a7e91d4988401eb4512839a3;hpb=0a1631e66c861de2799cd98fc93686ff121c9fce diff --git a/backend/src/main.rs b/backend/src/main.rs index 0d34341..951fd78 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -1,8 +1,9 @@ +use std::path::Path; + use actix_files as fs; use actix_web::{middleware, web, App, HttpServer}; use chrono::prelude::*; use clap::Parser; -use log::error; use data::db; @@ -60,6 +61,7 @@ async fn main() -> std::io::Result<()> { #[derive(Parser, Debug)] struct Args { + /// Will clear the database and insert some test data. (A backup is made first). #[arg(long)] dbtest: bool, } @@ -68,6 +70,27 @@ fn process_args() -> bool { let args = Args::parse(); if args.dbtest { + // Make a backup of the database. + let db_path = Path::new(consts::DB_DIRECTORY).join(consts::DB_FILENAME); + if db_path.exists() { + let db_path_bckup = (1..) + .find_map(|n| { + let p = db_path.with_extension(format!("sqlite.bckup{:03}", n)); + if p.exists() { + None + } else { + Some(p) + } + }) + .unwrap(); + std::fs::copy(&db_path, &db_path_bckup).expect(&format!( + "Unable to make backup of {:?} to {:?}", + &db_path, &db_path_bckup + )); + std::fs::remove_file(&db_path) + .expect(&format!("Unable to remove db file: {:?}", &db_path)); + } + match db::Connection::new() { Ok(con) => { if let Err(error) = con.execute_file("sql/data_test.sql") {