merge upstream
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 43s
All checks were successful
mnemo-build-and-publish / gractwo-mnemo-build (push) Successful in 43s
This commit is contained in:
@@ -27,8 +27,10 @@ pub fn pages() -> Router {
|
|||||||
.route("/users/{id}", get(users::profile::page))
|
.route("/users/{id}", get(users::profile::page))
|
||||||
.route("/users/create", get(users::create::page))
|
.route("/users/create", get(users::create::page))
|
||||||
.route("/users/create-form", post(users::create::create_user))
|
.route("/users/create-form", post(users::create::create_user))
|
||||||
|
//
|
||||||
.route("/tags", get(tags::page))
|
.route("/tags", get(tags::page))
|
||||||
.route("/tags/create", post(tags::create))
|
.route("/tags/create", post(tags::create))
|
||||||
|
.route("/tags/{id}/delete", post(tags::delete_tag))
|
||||||
//
|
//
|
||||||
.route("/persons", get(persons::page))
|
.route("/persons", get(persons::page))
|
||||||
.route("/persons/create", post(persons::create))
|
.route("/persons/create", post(persons::create))
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
use axum::{
|
use axum::{
|
||||||
Form,
|
Form,
|
||||||
extract::Request,
|
extract::{Path, Request},
|
||||||
http::HeaderMap,
|
http::HeaderMap,
|
||||||
response::{IntoResponse, Redirect, Response},
|
response::{IntoResponse, Redirect, Response},
|
||||||
};
|
};
|
||||||
use maud::{PreEscaped, html};
|
use maud::{PreEscaped, html};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
database::{self},
|
database::{self},
|
||||||
@@ -62,6 +63,13 @@ pub async fn page(req: Request) -> Result<Response, AuthError> {
|
|||||||
// div class="ml-2" {}
|
// div class="ml-2" {}
|
||||||
// "0" span class="*:size-3 ml-1 text-neutral-400" {(PreEscaped(icons::FILE_IMAGE))}
|
// "0" span class="*:size-3 ml-1 text-neutral-400" {(PreEscaped(icons::FILE_IMAGE))}
|
||||||
}
|
}
|
||||||
|
@if let Ok(0) = tag.get_tagged_quotes_count(&conn) {
|
||||||
|
form action=(format!("/tags/{}/delete", tag.id)) method="post" class="flex items-center ml-1" {
|
||||||
|
button type="submit" class="text-neutral-500 hover:text-red-400 text-sm flex items-center justify-center cursor-pointer" title="Delete" {
|
||||||
|
"✕"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,3 +120,21 @@ pub async fn create(
|
|||||||
tx.commit()?;
|
tx.commit()?;
|
||||||
Ok(Redirect::to("/tags").into_response())
|
Ok(Redirect::to("/tags").into_response())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn delete_tag(
|
||||||
|
Path(id): Path<Uuid>,
|
||||||
|
headers: HeaderMap,
|
||||||
|
) -> Result<Response, CompositeError> {
|
||||||
|
let u = User::authenticate(&headers)?.required()?;
|
||||||
|
let mut conn = database::conn()?;
|
||||||
|
let tx = conn.transaction()?;
|
||||||
|
|
||||||
|
let t = Tag::get_by_id(&tx, id)?;
|
||||||
|
let name = t.name.as_str().to_string();
|
||||||
|
t.delete(&tx)?;
|
||||||
|
|
||||||
|
LogEntry::new(&tx, u, LogAction::DeleteTag { id, name })?;
|
||||||
|
tx.commit()?;
|
||||||
|
|
||||||
|
Ok(Redirect::to("/tags").into_response())
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user