From 48b83f3d734cf130b3304d326227ebbd81337d55 Mon Sep 17 00:00:00 2001 From: Per Stark Date: Sat, 3 May 2025 21:16:52 +0200 Subject: [PATCH] feat: categories list api router --- api-router/Cargo.toml | 1 + api-router/src/lib.rs | 5 +++-- api-router/src/routes/categories.rs | 13 +++++++++++++ api-router/src/routes/mod.rs | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 api-router/src/routes/categories.rs diff --git a/api-router/Cargo.toml b/api-router/Cargo.toml index 7cc32a0..985a60a 100644 --- a/api-router/Cargo.toml +++ b/api-router/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" [dependencies] tokio = { workspace = true } serde = { workspace = true } +serde_json = { workspace = true } axum = { workspace = true } tracing = { workspace = true } anyhow = { workspace = true } diff --git a/api-router/src/lib.rs b/api-router/src/lib.rs index ed13579..c3130a3 100644 --- a/api-router/src/lib.rs +++ b/api-router/src/lib.rs @@ -2,11 +2,11 @@ use api_state::ApiState; use axum::{ extract::{DefaultBodyLimit, FromRef}, middleware::from_fn_with_state, - routing::post, + routing::{get, post}, Router, }; use middleware_api_auth::api_auth; -use routes::ingress::ingest_data; +use routes::{categories::get_categories, ingress::ingest_data}; pub mod api_state; pub mod error; @@ -21,6 +21,7 @@ where { Router::new() .route("/ingress", post(ingest_data)) + .route("/categories", get(get_categories)) .layer(DefaultBodyLimit::max(1024 * 1024 * 1024)) .route_layer(from_fn_with_state(app_state.clone(), api_auth)) } diff --git a/api-router/src/routes/categories.rs b/api-router/src/routes/categories.rs new file mode 100644 index 0000000..4035c1e --- /dev/null +++ b/api-router/src/routes/categories.rs @@ -0,0 +1,13 @@ +use axum::{extract::State, response::IntoResponse, Extension, Json}; +use common::storage::types::user::User; + +use crate::{api_state::ApiState, error::ApiError}; + +pub async fn get_categories( + State(state): State, + Extension(user): Extension, +) -> Result { + let categories = User::get_user_categories(&user.id, &state.db).await?; + + Ok(Json(categories)) +} diff --git a/api-router/src/routes/mod.rs b/api-router/src/routes/mod.rs index d8d3864..3a6e996 100644 --- a/api-router/src/routes/mod.rs +++ b/api-router/src/routes/mod.rs @@ -1 +1,2 @@ +pub mod categories; pub mod ingress;