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