Lines
92.74 %
Functions
13.33 %
Branches
100 %
use std::sync::Arc;
use axum::{
Router, middleware,
routing::{get, post},
};
use crate::{
AppState,
files::download_file,
handler::{
get_home_link, get_logout_link, get_me_handler, get_version, login_user_handler,
logout_handler, refresh_access_token_handler, register_user_handler,
},
jwt_auth::{admin, auth},
pages::{account, commodity, file_table, tag},
redirect_middleware::redirect_on_auth_error,
pub fn create_pages_router(app_state: Arc<AppState>) -> Router<Arc<AppState>> {
Router::new()
.route(
"/commodity/create",
get(crate::pages::commodity::create::submit::commodity_create_page),
)
"/commodity/list",
get(crate::pages::commodity::list::commodity_list_page),
.route_layer(middleware::from_fn_with_state(app_state.clone(), auth))
.route_layer(middleware::from_fn(redirect_on_auth_error))
.with_state(app_state.clone())
}
pub fn create_accounts_router(app_state: Arc<AppState>) -> Router<Arc<AppState>> {
"/account/create",
get(crate::pages::account::create::submit::account_create_page),
"/account/list",
get(crate::pages::account::list::account_list_page),
pub fn create_transactions_router(app_state: Arc<AppState>) -> Router<Arc<AppState>> {
"/transaction/create",
get(crate::pages::transaction::create::submit::transaction_create_page),
"/transaction/list",
get(crate::pages::transaction::list::transaction_list_page),
"/transaction/edit/{id}",
get(crate::pages::transaction::edit::submit::transaction_edit_page),
pub fn create_tags_router(app_state: Arc<AppState>) -> Router<Arc<AppState>> {
"/tag/create",
get(crate::pages::tag::create::tag_create_page),
.route("/tag/list", get(crate::pages::tag::list::tag_list_page))
"/tag/edit/{id}",
get(crate::pages::tag::edit::tag_edit_page),
pub fn create_api_router(app_state: Arc<AppState>) -> Router<Arc<AppState>> {
let public_router = Router::new()
.route("/auth/login", post(login_user_handler))
.route("/version", get(get_version));
let auth_router = Router::new()
.route("/auth/refresh", get(refresh_access_token_handler))
.route("/files/list", get(file_table))
.route("/files/download/{file_name}", get(download_file))
.route("/auth/logout", get(logout_handler))
.route("/users/me", get(get_me_handler))
.route("/htmx/logoutlink", get(get_logout_link))
.with_state(app_state.clone());
let account_router = Router::new()
.route("/account/list", get(account::list::account_table))
.route("/account/info", get(account::list::account_info))
.route("/account/search", post(account::search::search_accounts))
"/account/create/submit",
post(account::create::submit::create_account),
"/account/create/validate/name",
post(account::create::validate::validate_name),
let nav_router = Router::new()
.route("/nav/home", get(get_home_link))
let commodity_router = Router::new()
.route("/commodity/list", get(commodity::list::commodity_table))
"/commodity/search",
post(commodity::search::search_commodities),
"/commodity/create/submit",
post(commodity::create::submit::commodity_submit),
"/commodity/create/validate/fraction",
post(commodity::create::validate::validate_fraction),
"/commodity/create/validate/symbol",
post(commodity::create::validate::validate_symbol),
"/commodity/create/validate/name",
post(commodity::create::validate::validate_name),
let transaction_router = Router::new()
get(crate::pages::transaction::list::transaction_table),
"/transaction/split/create",
get(crate::pages::transaction::create::split::split_create_handler),
"/transaction/create/submit",
post(crate::pages::transaction::create::submit::transaction_submit),
"/transaction/create/validate/amount",
post(crate::pages::transaction::validate::validate_amount_html),
"/transaction/create/validate/from_account",
post(crate::pages::transaction::validate::validate_from_account_html),
"/transaction/create/validate/to_account",
post(crate::pages::transaction::validate::validate_to_account_html),
"/transaction/create/validate/note",
post(crate::pages::transaction::validate::validate_note_html),
"/transaction/edit/submit",
post(crate::pages::transaction::edit::submit::transaction_edit_submit),
"/transaction/edit/validate/amount",
post(crate::pages::transaction::validate::validate_amount_json),
"/transaction/edit/validate/from_account",
post(crate::pages::transaction::validate::validate_from_account_json),
"/transaction/edit/validate/to_account",
post(crate::pages::transaction::validate::validate_to_account_json),
"/transaction/edit/validate/note",
post(crate::pages::transaction::validate::validate_note_json),
"/transaction/delete/{id}",
post(crate::pages::transaction::delete::submit::transaction_delete_submit),
let tag_router = Router::new()
.route("/tag/list", get(tag::list::tag_table))
.route("/tag/create/submit", post(tag::create::create_tag))
"/transaction/{id}/tag/create/submit",
post(tag::create::create_transaction_tag),
"/split/{id}/tag/create/submit",
post(tag::create::create_split_tag),
.route("/tag/edit/submit", post(tag::edit::edit_tag))
.route("/tag/delete/{id}", post(tag::edit::delete_tag))
"/tags/transaction/names",
get(tag::autocomplete::transaction_tag_names),
"/tags/transaction/values",
get(tag::autocomplete::transaction_tag_values),
.route("/tags/split/names", get(tag::autocomplete::split_tag_names))
"/tags/split/values",
get(tag::autocomplete::split_tag_values),
let admin_router = Router::new()
.route("/auth/register", post(register_user_handler))
.route_layer(middleware::from_fn_with_state(app_state.clone(), admin))
.route_layer(middleware::from_fn_with_state(app_state, auth));
.merge(public_router)
.merge(nav_router)
.merge(auth_router)
.merge(account_router)
.merge(commodity_router)
.merge(transaction_router)
.merge(tag_router)
.merge(admin_router)