Autoformat
This commit is contained in:
@ -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
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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()?;
|
||||
}
|
||||
|
||||
@ -61,4 +61,3 @@ pub mod trees {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user