Autoformat

This commit is contained in:
2020-11-11 22:54:40 +01:00
parent 243c5e6e5a
commit 70c354fa6d
5 changed files with 43 additions and 27 deletions

View File

@ -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
),
}
}

View File

@ -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")?;

View File

@ -61,4 +61,3 @@ pub mod trees {
}
}
}

View File

@ -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);

View File

@ -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,
};