diff --git a/src/database/migrations/mod.rs b/src/database/migrations/mod.rs index a7def24..380652b 100644 --- a/src/database/migrations/mod.rs +++ b/src/database/migrations/mod.rs @@ -4,14 +4,21 @@ use crate::database::unversioned::global::schema_version; use duplicate::duplicate; use sled::Db; -pub fn migrate(db: &mut Db, from: schema_version::V, to: schema_version::V) -> Result<(), MigrationError> { +pub fn migrate( + db: &mut Db, + from: schema_version::V, + to: schema_version::V, +) -> Result<(), MigrationError> { for current in from..to { let next = current + 1; println!("Will migrate from {} to {}", current, next); match (current, next) { (1, 2) => v1_to_v2::migrate(db)?, - _ => panic!("No valid migration from version {} to version {}", current, next), + _ => panic!( + "No valid migration from version {} to version {}", + current, next + ), } } diff --git a/src/database/migrations/v1_to_v2.rs b/src/database/migrations/v1_to_v2.rs index f9d3d3f..97b04e8 100644 --- a/src/database/migrations/v1_to_v2.rs +++ b/src/database/migrations/v1_to_v2.rs @@ -1,14 +1,14 @@ +use super::MigrationError; use crate::database::v1; use crate::database::v2; -use super::MigrationError; -use bincode::{serialize, deserialize}; -use sled::Db; +use bincode::{deserialize, serialize}; use chrono::{DateTime, Utc}; +use sled::Db; /// Migrate from database version 1 to version 2 pub fn migrate(db: &mut Db) -> Result<(), MigrationError> { - - { // Migrate sessions + { + // Migrate sessions // Open old & new trees let v1_past_sessions = db.open_tree(v1::trees::past_sessions::NAME)?; @@ -22,7 +22,7 @@ pub fn migrate(db: &mut Db) -> Result<(), MigrationError> { let v1::trees::past_sessions::V { category, started, - ended + ended, } = deserialize(&v)?; // Convert to new value @@ -41,7 +41,8 @@ pub fn migrate(db: &mut Db) -> Result<(), MigrationError> { v1_past_sessions.clear()?; } - { // Migrate categories + { + // Migrate categories // Open the old tree, and a TMP tree since the old tree name hasn't changed let categories = db.open_tree(v1::trees::categories::NAME)?; let v2_categories_tmp = db.open_tree("TEMP")?; @@ -75,7 +76,7 @@ pub fn migrate(db: &mut Db) -> Result<(), MigrationError> { categories.clear()?; for r in v2_categories_tmp.iter() { let (k, v) = r?; - categories.insert(k ,v)?; + categories.insert(k, v)?; } v2_categories_tmp.clear()?; } diff --git a/src/database/v2.rs b/src/database/v2.rs index bb840c5..8f078f2 100644 --- a/src/database/v2.rs +++ b/src/database/v2.rs @@ -61,4 +61,3 @@ pub mod trees { } } } - diff --git a/src/main.rs b/src/main.rs index b55c097..07b434b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,10 +4,10 @@ mod handlebars_util; mod routes; mod status_json; -use bincode::{deserialize, serialize}; -use crate::database::SCHEMA_VERSION; -use crate::database::unversioned::global::schema_version; use crate::database::migrations::migrate; +use crate::database::unversioned::global::schema_version; +use crate::database::SCHEMA_VERSION; +use bincode::{deserialize, serialize}; use dotenv::dotenv; use rocket_contrib::serve::StaticFiles; use rocket_contrib::templates::Template; @@ -30,8 +30,7 @@ fn main() -> io::Result<()> { SCHEMA_VERSION, prev_schema_version ); - migrate(&mut sled, prev_schema_version, SCHEMA_VERSION) - .expect("Migration failed") + migrate(&mut sled, prev_schema_version, SCHEMA_VERSION).expect("Migration failed") } None => { println!("Schema version: {}, previously: None", SCHEMA_VERSION); diff --git a/src/routes/api.rs b/src/routes/api.rs index f26cae1..1e920e9 100644 --- a/src/routes/api.rs +++ b/src/routes/api.rs @@ -2,7 +2,7 @@ use crate::database::latest::trees::{categories, sessions}; use crate::routes::pages; use crate::status_json::StatusJson; use bincode::{deserialize, serialize}; -use chrono::{NaiveDateTime, TimeZone, Duration, Local}; +use chrono::{Duration, Local, NaiveDateTime, TimeZone}; use rocket::http::Status; use rocket::request::{Form, FromForm}; use rocket::response::Redirect; @@ -72,12 +72,13 @@ pub fn bump_session( Some(started) => { if let Some(new_started) = started.checked_sub_signed(duration) { *started = new_started; - tx_categories.insert(&category_uuid_s, serialize(&category).unwrap())?; + tx_categories + .insert(&category_uuid_s, serialize(&category).unwrap())?; } else { return Ok(Err(StatusJson::new( Status::BadRequest, "Duration subtract resulted in overflow", - ))) + ))); } Ok(Ok(Redirect::to(uri!(pages::index)))) @@ -104,8 +105,8 @@ pub fn toggle_category_session( let categories_tree = db.open_tree(categories::NAME)?; let sessions_tree = db.open_tree(sessions::NAME)?; - Ok((&categories_tree, &sessions_tree).transaction( - |(tx_categories, tx_sessions)| { + Ok( + (&categories_tree, &sessions_tree).transaction(|(tx_categories, tx_sessions)| { match tx_categories.get(&category_uuid_s)? { None => return Ok(Err(Status::NotFound)), Some(data) => { @@ -124,8 +125,7 @@ pub fn toggle_category_session( ended: now, deleted: category.deleted, }; - tx_sessions - .insert(session_uuid, serialize(&session).unwrap())?; + tx_sessions.insert(session_uuid, serialize(&session).unwrap())?; } } (true, None) => { @@ -142,8 +142,8 @@ pub fn toggle_category_session( } Ok(Ok(Status::Ok.into())) - }, - )??) + })??, + ) } #[derive(Debug, FromForm)] @@ -164,8 +164,18 @@ pub fn edit_session( let session = sessions::V { category: session.category.into_inner(), - started: Local.from_local_datetime(&NaiveDateTime::parse_from_str(&session.started, "%Y-%m-%d %H:%M")?).unwrap(), - ended: Local.from_local_datetime(&NaiveDateTime::parse_from_str(&session.ended, "%Y-%m-%d %H:%M")?).unwrap(), + started: Local + .from_local_datetime(&NaiveDateTime::parse_from_str( + &session.started, + "%Y-%m-%d %H:%M", + )?) + .unwrap(), + ended: Local + .from_local_datetime(&NaiveDateTime::parse_from_str( + &session.ended, + "%Y-%m-%d %H:%M", + )?) + .unwrap(), deleted: session.deleted, };