Code cleanup

This commit is contained in:
Manuel Forcén Muñoz 2024-05-22 23:24:13 +02:00
parent c9632b3d98
commit b676be8cb2
9 changed files with 33 additions and 273 deletions

View file

@ -134,6 +134,14 @@ pub async fn list_transactions(
);
}
let categories: HashMap<i32, String> = Category::list(db.as_ref())
.await
.unwrap()
.iter()
.map(|x| (x.category_id, x.name.clone()))
.collect();
ctx.insert("categories", &categories);
let n_entries = entries.unwrap_or(10).max(10);
let page = page.unwrap_or(0).max(0);

View file

@ -1,72 +0,0 @@
use std::sync::Arc;
use accounters::models::categories::Category;
use axum::{
extract::{Form, State},
response::IntoResponse,
};
use hyper::{header::CONTENT_TYPE, StatusCode};
use serde::Deserialize;
use sqlx::SqlitePool;
use tera::{Context, Tera};
use crate::users::UserToken;
pub async fn list(
State(db): State<Arc<SqlitePool>>,
State(tmpl): State<Arc<Tera>>,
uid: UserToken,
) -> impl IntoResponse {
match Category::list(db.as_ref()).await {
Ok(categories) => {
let mut ctx = Context::new();
ctx.insert("categories", &categories);
(
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpl.render("categories_list.html", &ctx).unwrap(),
)
}
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,
[(CONTENT_TYPE, "text/plain;charset=utf-8")],
format!("{e}"),
),
}
}
pub async fn new_view(State(tmpl): State<Arc<Tera>>, uid: UserToken) -> impl IntoResponse {
(
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpl.render("categories_new.html", &Context::new()).unwrap(),
)
}
#[derive(Deserialize)]
pub struct NewRuleParams {
pub name: String,
pub description: String,
}
pub async fn new_action(
State(db): State<Arc<SqlitePool>>,
State(tmpls): State<Arc<Tera>>,
uid: UserToken,
Form(params): Form<NewRuleParams>,
) -> impl IntoResponse {
match Category::new(db.as_ref(), &params.name, &params.description).await {
Ok(_) => (
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpls
.render("rules_new_success.html", &Context::new())
.unwrap(),
),
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,
[(CONTENT_TYPE, "text/plain;charset=utf-8")],
format!("{e}"),
),
}
}

View file

@ -5,7 +5,10 @@ use axum::{
extract::{Form, State},
response::IntoResponse,
};
use hyper::{header::CONTENT_TYPE, StatusCode};
use hyper::{
header::{CONTENT_TYPE, LOCATION},
StatusCode,
};
use serde::Deserialize;
use sqlx::SqlitePool;
use tera::{Context, Tera};
@ -75,17 +78,14 @@ pub struct NewRuleParams {
pub async fn rules_new_action(
State(db): State<Arc<SqlitePool>>,
State(tmpls): State<Arc<Tera>>,
uid: UserToken,
Form(params): Form<NewRuleParams>,
) -> impl IntoResponse {
match Rule::new(db.as_ref(), uid.user_id, params.regex, params.category).await {
Ok(_) => (
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpls
.render("rules_new_success.html", &Context::new())
.unwrap(),
StatusCode::MOVED_PERMANENTLY,
[(LOCATION, "/classifiers")],
String::new(),
),
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,
@ -95,29 +95,6 @@ pub async fn rules_new_action(
}
}
pub async fn category_list(
State(db): State<Arc<SqlitePool>>,
State(tmpl): State<Arc<Tera>>,
uid: UserToken,
) -> impl IntoResponse {
match Category::list(db.as_ref()).await {
Ok(categories) => {
let mut ctx = Context::new();
ctx.insert("categories", &categories);
(
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpl.render("categories_list.html", &ctx).unwrap(),
)
}
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,
[(CONTENT_TYPE, "text/plain;charset=utf-8")],
format!("{e}"),
),
}
}
pub async fn category_new_view(State(tmpl): State<Arc<Tera>>, uid: UserToken) -> impl IntoResponse {
(
StatusCode::OK,
@ -134,17 +111,14 @@ pub struct CategoryNewRuleParams {
pub async fn category_new_action(
State(db): State<Arc<SqlitePool>>,
State(tmpls): State<Arc<Tera>>,
uid: UserToken,
Form(params): Form<CategoryNewRuleParams>,
) -> impl IntoResponse {
match Category::new(db.as_ref(), &params.name, &params.description).await {
Ok(_) => (
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpls
.render("rules_new_success.html", &Context::new())
.unwrap(),
StatusCode::MOVED_PERMANENTLY,
[(LOCATION, "/classifiers")],
String::new(),
),
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,

View file

@ -1,84 +0,0 @@
use std::sync::Arc;
use accounters::models::{categories::Category, rules::Rule};
use axum::{
extract::{Form, State},
response::IntoResponse,
};
use hyper::{header::CONTENT_TYPE, StatusCode};
use serde::Deserialize;
use sqlx::SqlitePool;
use tera::{Context, Tera};
use crate::users::UserToken;
pub async fn list(
State(db): State<Arc<SqlitePool>>,
State(tmpls): State<Arc<Tera>>,
uid: UserToken,
) -> impl IntoResponse {
let rules = match Rule::list_by_user(db.as_ref(), uid.user_id).await {
Ok(r) => r,
Err(e) => {
return (
StatusCode::INTERNAL_SERVER_ERROR,
[(CONTENT_TYPE, "text/plain")],
format!("{e:?}"),
);
}
};
let mut ctx = Context::new();
ctx.insert("rules", &rules);
(
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpls.render("rules_list.html", &ctx).unwrap(),
)
}
pub async fn new_view(
State(db): State<Arc<SqlitePool>>,
State(tmpls): State<Arc<Tera>>,
uid: UserToken,
) -> impl IntoResponse {
let categories = Category::list(db.as_ref()).await.unwrap();
let mut ctx = Context::new();
ctx.insert("categories", &categories);
(
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpls.render("rules_new.html", &ctx).unwrap(),
)
}
#[derive(Deserialize)]
pub struct NewRuleParams {
pub description: String,
pub regex: String,
pub category: i32,
}
pub async fn new_action(
State(db): State<Arc<SqlitePool>>,
State(tmpls): State<Arc<Tera>>,
uid: UserToken,
Form(params): Form<NewRuleParams>,
) -> impl IntoResponse {
match Rule::new(db.as_ref(), uid.user_id, params.regex, params.category).await {
Ok(_) => (
StatusCode::OK,
[(CONTENT_TYPE, "text/html;charset=utf-8")],
tmpls
.render("rules_new_success.html", &Context::new())
.unwrap(),
),
Err(e) => (
StatusCode::INTERNAL_SERVER_ERROR,
[(CONTENT_TYPE, "text/plain;charset=utf-8")],
format!("{e}"),
),
}
}