Compare commits
2 Commits
35932da2f7
...
665915f61b
| Author | SHA1 | Date | |
|---|---|---|---|
| 665915f61b | |||
|
acfd8a6d72
|
@@ -27,8 +27,10 @@ pub fn pages() -> Router {
|
||||
.route("/users/{id}", get(users::profile::page))
|
||||
.route("/users/create", get(users::create::page))
|
||||
.route("/users/create-form", post(users::create::create_user))
|
||||
//
|
||||
.route("/tags", get(tags::page))
|
||||
.route("/tags/create", post(tags::create))
|
||||
.route("/tags/{id}/delete", post(tags::delete_tag))
|
||||
//
|
||||
.route("/persons", get(persons::page))
|
||||
.route("/persons/create", post(persons::create))
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
use axum::{
|
||||
Form,
|
||||
extract::Request,
|
||||
extract::{Path, Request},
|
||||
http::HeaderMap,
|
||||
response::{IntoResponse, Redirect, Response},
|
||||
};
|
||||
use maud::{PreEscaped, html};
|
||||
use serde::Deserialize;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::{
|
||||
database::{self},
|
||||
@@ -62,6 +63,13 @@ pub async fn page(req: Request) -> Result<Response, AuthError> {
|
||||
// div class="ml-2" {}
|
||||
// "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()?;
|
||||
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