Move api routes to /api and add /api/sessions
This commit is contained in:
0
src/database/category.rs
Normal file
0
src/database/category.rs
Normal file
@ -1,4 +1,5 @@
|
||||
pub mod unversioned;
|
||||
pub mod util;
|
||||
pub mod v1;
|
||||
pub mod v2;
|
||||
|
||||
|
||||
10
src/database/util/categories.rs
Normal file
10
src/database/util/categories.rs
Normal file
@ -0,0 +1,10 @@
|
||||
use std::collections::HashMap;
|
||||
use crate::database::v2;
|
||||
|
||||
pub fn get_category() -> () {
|
||||
todo!()
|
||||
}
|
||||
|
||||
pub fn get_all_categories() -> Result<HashMap< {
|
||||
todo!()
|
||||
}
|
||||
25
src/database/util/category.rs
Normal file
25
src/database/util/category.rs
Normal file
@ -0,0 +1,25 @@
|
||||
use crate::database::latest::trees::categories;
|
||||
use crate::status_json::StatusJson;
|
||||
use bincode::{deserialize, serialize};
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn get_category(
|
||||
tree: &sled::Tree,
|
||||
key: &categories::K,
|
||||
) -> Result<Option<categories::V>, StatusJson> {
|
||||
Ok(match tree.get(serialize(key)?)? {
|
||||
Some(raw) => Some(deserialize(&raw)?),
|
||||
None => None,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_all_categories(
|
||||
tree: &sled::Tree,
|
||||
) -> Result<HashMap<categories::K, categories::V>, StatusJson> {
|
||||
Ok(tree
|
||||
.iter()
|
||||
.map(|result| {
|
||||
result.map(|(k, v)| deserialize(&k).and_then(|k| deserialize(&v).map(|v| (k, v))))
|
||||
})
|
||||
.collect::<Result<Result<_, _>, _>>()??)
|
||||
}
|
||||
1
src/database/util/mod.rs
Normal file
1
src/database/util/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod category;
|
||||
@ -61,7 +61,13 @@ async fn main() -> io::Result<()> {
|
||||
routes::pages::session_edit,
|
||||
routes::pages::stats::single_stats,
|
||||
routes::pages::stats::all_stats,
|
||||
],
|
||||
)
|
||||
.mount(
|
||||
"/api",
|
||||
rocket::routes![
|
||||
routes::api::edit_session,
|
||||
routes::api::get_sessions,
|
||||
routes::api::create_category,
|
||||
routes::api::start_session,
|
||||
routes::api::end_session,
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
use crate::auth::Authorized;
|
||||
use crate::database::latest::trees::{categories, sessions};
|
||||
use crate::database::util::category::get_all_categories;
|
||||
use crate::routes::pages;
|
||||
use crate::status_json::StatusJson;
|
||||
use bincode::{deserialize, serialize};
|
||||
@ -7,9 +8,20 @@ use chrono::{Duration, Local, NaiveDateTime, TimeZone};
|
||||
use rocket::http::Status;
|
||||
use rocket::request::{Form, FromForm};
|
||||
use rocket::response::Redirect;
|
||||
use rocket::{post, uri, State};
|
||||
use rocket::{get, post, uri, State};
|
||||
use rocket_contrib::json::Json;
|
||||
use rocket_contrib::uuid::Uuid;
|
||||
use sled::Transactional;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[get("/sessions")]
|
||||
pub fn get_sessions(
|
||||
_auth: Authorized,
|
||||
db: State<'_, sled::Db>,
|
||||
) -> Result<Json<HashMap<categories::K, categories::V>>, StatusJson> {
|
||||
let categories_tree = db.open_tree(categories::NAME)?;
|
||||
Ok(Json(get_all_categories(&categories_tree)?))
|
||||
}
|
||||
|
||||
#[derive(FromForm)]
|
||||
pub struct NewCategory {
|
||||
|
||||
Reference in New Issue
Block a user