+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;
#[derive(Parser, Debug)]
struct Args {
+ /// Will clear the database and insert some test data. (A backup is made first).
#[arg(long)]
dbtest: 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") {