From 2fae02ac6a6580b29a6ac40085bee6dcbd748ca6 Mon Sep 17 00:00:00 2001 From: Drew Wells Date: Tue, 26 Nov 2024 11:00:52 -0600 Subject: [PATCH] report write errors if sqlite can not be created --- src/database/sqlite.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/database/sqlite.rs b/src/database/sqlite.rs index f2ed513..37566b1 100644 --- a/src/database/sqlite.rs +++ b/src/database/sqlite.rs @@ -1,4 +1,6 @@ +use std::path::{PathBuf}; use std::io::{Error, ErrorKind}; +use std::fs::File; use rusqlite::{Connection, Row}; use crate::database::{Database, DBRawToStruct}; use crate::results::TelemetryData; @@ -13,7 +15,25 @@ pub fn init (database_file : &Option) -> std::io::Result { Err(Error::new(ErrorKind::Other,"Error setup sqlite invalid database file.")) } Some(database_file) => { - let connection = Connection::open(database_file); + let mut database_path = PathBuf::from(database_file); + if !database_path.is_absolute() { + database_path = PathBuf::from(std::env::current_dir().unwrap().join(database_file)); + } + + println!("Using sqlite database file: {}", database_path.display()); + + if !database_path.exists() { + let create_file = File::create(&database_path); + match create_file { + Ok(_) => { + println!("Created sqlite database file: {}", database_path.display()); + } + Err(e) => { + return Err(Error::new(ErrorKind::Other,format!("Error setup sqlite {:?}",e))); + } + } + } + let connection = Connection::open(database_path); match connection { Ok(connection) => { let create_table = connection.execute(