create & getall for tags

This commit is contained in:
2026-03-06 15:33:39 +01:00
parent 2ebbc88c0a
commit 9931bbe306
4 changed files with 49 additions and 0 deletions

View File

@@ -33,6 +33,8 @@ pub fn api_router() -> Router {
.route("/api/sessions/{id}", get(sessions::get_by_id))
.route("/api/sessions/{id}/revoke", post(sessions::revoke_by_id))
//
.route("/api/tags", get(tags::get_all))
.route("/api/tags", post(tags::create))
.route("/api/tags/{id}", get(tags::get_by_id))
.route("/api/tags/#{name}", get(tags::get_by_name))
}

View File

@@ -4,6 +4,7 @@ use axum::{
http::HeaderMap,
response::{IntoResponse, Response},
};
use serde::Deserialize;
use uuid::Uuid;
use crate::{
@@ -15,6 +16,11 @@ use crate::{
},
};
pub async fn get_all(headers: HeaderMap) -> Result<Response, CompositeError> {
User::authenticate(&headers)?.required()?;
Ok(Json(Tag::get_all()?).into_response())
}
pub async fn get_by_id(
Path(id): Path<Uuid>,
headers: HeaderMap,
@@ -30,3 +36,15 @@ pub async fn get_by_name(
User::authenticate(&headers)?.required()?;
Ok(Json(Tag::get_by_name(name)?).into_response())
}
#[derive(Deserialize)]
pub struct NewTag {
name: TagName,
}
pub async fn create(
headers: HeaderMap,
Json(form): Json<NewTag>,
) -> Result<Response, CompositeError> {
User::authenticate(&headers)?.required()?;
Ok(Json(Tag::create(form.name)?).into_response())
}