make station names editable; fixes #4
This commit is contained in:
18
src/route.rs
18
src/route.rs
@ -149,13 +149,14 @@ async fn view(
|
||||
a href="/route" { "↩️" }
|
||||
"Route " (route.name)
|
||||
}
|
||||
details {
|
||||
summary { "Routenname bearbeiten ✏️" }
|
||||
form action=(format!("/route/{}/name", route.id)) method="post" {
|
||||
input type="text" name="name" value=(route.name) required;
|
||||
input type="submit" value="Speichern";
|
||||
article {
|
||||
details {
|
||||
summary { "Routenname bearbeiten ✏️" }
|
||||
form action=(format!("/route/{}/name", route.id)) method="post" {
|
||||
input type="text" name="name" value=(route.name) required;
|
||||
input type="submit" value="Speichern";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
Ok(page(content, session, false).await)
|
||||
@ -184,8 +185,9 @@ async fn update_name(
|
||||
|
||||
succ!(
|
||||
session,
|
||||
"Name der Route '{}' wurden erfolgreich bearbeitet!",
|
||||
route.name
|
||||
"Route '{}' heißt ab sofort {}.",
|
||||
route.name,
|
||||
form.name
|
||||
);
|
||||
|
||||
Redirect::to(&format!("/route/{id}"))
|
||||
|
@ -47,6 +47,13 @@ impl Station {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn update_name(&self, db: &SqlitePool, name: &str) {
|
||||
sqlx::query!("UPDATE station SET name = ? WHERE id = ?", name, self.id)
|
||||
.execute(db)
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
async fn update_notes(&self, db: &SqlitePool, notes: &str) {
|
||||
sqlx::query!("UPDATE station SET notes = ? WHERE id = ?", notes, self.id)
|
||||
.execute(db)
|
||||
|
@ -74,6 +74,16 @@ async fn view(
|
||||
a href="/station" { "↩️" }
|
||||
"Station " (station.name)
|
||||
}
|
||||
article {
|
||||
details {
|
||||
summary { "Stationsname bearbeiten ✏️" }
|
||||
form action=(format!("/station/{}/name", station.id)) method="post" {
|
||||
input type="text" name="name" value=(station.name) required;
|
||||
input type="submit" value="Speichern";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
table {
|
||||
tbody {
|
||||
tr {
|
||||
@ -220,6 +230,37 @@ async fn view(
|
||||
Ok(page(content, session, true).await)
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct UpdateNameForm {
|
||||
name: String,
|
||||
}
|
||||
async fn update_name(
|
||||
State(db): State<Arc<SqlitePool>>,
|
||||
session: Session,
|
||||
axum::extract::Path(id): axum::extract::Path<i64>,
|
||||
Form(form): Form<UpdateNameForm>,
|
||||
) -> impl IntoResponse {
|
||||
let Some(station) = Station::find_by_id(&db, id).await else {
|
||||
err!(
|
||||
session,
|
||||
"Station mit ID {id} konnte nicht bearbeitet werden, da sie nicht existiert"
|
||||
);
|
||||
|
||||
return Redirect::to("/station");
|
||||
};
|
||||
|
||||
station.update_name(&db, &form.name).await;
|
||||
|
||||
succ!(
|
||||
session,
|
||||
"Station '{}' heißt ab sofort '{}'.",
|
||||
station.name,
|
||||
form.name
|
||||
);
|
||||
|
||||
Redirect::to(&format!("/station/{id}"))
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct UpdateNotesForm {
|
||||
notes: String,
|
||||
@ -399,6 +440,7 @@ pub(super) fn routes() -> Router<Arc<SqlitePool>> {
|
||||
.route("/", post(create))
|
||||
.route("/{id}", get(view))
|
||||
.route("/{id}/delete", get(delete))
|
||||
.route("/{id}/name", post(update_name))
|
||||
.route("/{id}/notes", post(update_notes))
|
||||
.route("/{id}/amount-people", post(update_amount_people))
|
||||
.route("/{id}/amount-people-reset", get(update_amount_people_reset))
|
||||
|
Reference in New Issue
Block a user