Skip to content

Commit dbc810d

Browse files
author
Drew Wells
committed
surface file i/o errors with config and sqlite.db
create parent directory, ignoring errors when doing so
1 parent b74d5f1 commit dbc810d

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/database/sqlite.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
1-
use std::io::{Error, ErrorKind};
2-
use rusqlite::{Connection, Row};
3-
use crate::database::{Database, DBRawToStruct};
1+
use crate::database::{DBRawToStruct, Database};
42
use crate::results::TelemetryData;
3+
use rusqlite::{Connection, Row};
4+
use std::io::{Error, ErrorKind};
5+
use std::path::PathBuf;
56

67
pub struct SQLite {
78
pub connection: Connection,
89
}
910

10-
pub fn init (database_file : &Option<String>) -> std::io::Result<Connection> {
11+
pub fn init(database_file: &Option<String>) -> std::io::Result<Connection> {
1112
match database_file {
12-
None => {
13-
Err(Error::new(ErrorKind::Other,"Error setup sqlite invalid database file."))
14-
}
13+
None => Err(Error::new(
14+
ErrorKind::Other,
15+
"Error setup sqlite invalid database file.",
16+
)),
1517
Some(database_file) => {
16-
let connection = Connection::open(database_file);
18+
let mut database_path = PathBuf::from(database_file);
19+
if !database_path.is_absolute() {
20+
database_path = PathBuf::from(std::env::current_dir().unwrap().join(database_file));
21+
}
22+
23+
// attempt to create the parent directory and ignore errors if it already exists
24+
let _ = std::fs::create_dir_all(database_path.parent().unwrap());
25+
26+
let connection = Connection::open(database_path);
1727
match connection {
1828
Ok(connection) => {
1929
let create_table = connection.execute(

0 commit comments

Comments
 (0)