nicer redirect after creating team; Fixes #37
This commit is contained in:
parent
75c2bc9bbb
commit
50c5bb6cc3
@ -117,23 +117,23 @@ impl Team {
|
|||||||
.ok()
|
.ok()
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn create(db: &SqlitePool, name: &str, route: &Route) -> Result<(), CreateError> {
|
async fn create(db: &SqlitePool, name: &str, route: &Route) -> Result<i64, CreateError> {
|
||||||
// get next station id which has the lowest amount of teams to have in the first place
|
// get next station id which has the lowest amount of teams to have in the first place
|
||||||
// assigned
|
// assigned
|
||||||
let Some(station) = route.get_next_first_station(db).await else {
|
let Some(station) = route.get_next_first_station(db).await else {
|
||||||
return Err(CreateError::NoStationForRoute);
|
return Err(CreateError::NoStationForRoute);
|
||||||
};
|
};
|
||||||
|
|
||||||
sqlx::query!(
|
let result = sqlx::query!(
|
||||||
"INSERT INTO team(name, route_id, first_station_id) VALUES (?, ?, ?)",
|
"INSERT INTO team(name, route_id, first_station_id) VALUES (?, ?, ?) RETURNING id",
|
||||||
name,
|
name,
|
||||||
route.id,
|
route.id,
|
||||||
station.id
|
station.id
|
||||||
)
|
)
|
||||||
.execute(db)
|
.fetch_one(db)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| CreateError::DuplicateName(e.to_string()))?;
|
.map_err(|e| CreateError::DuplicateName(e.to_string()))?;
|
||||||
Ok(())
|
Ok(result.id.unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_name(&self, db: &SqlitePool, name: &str) {
|
async fn update_name(&self, db: &SqlitePool, name: &str) {
|
||||||
|
@ -39,22 +39,33 @@ async fn create(
|
|||||||
return Redirect::to("/admin/team");
|
return Redirect::to("/admin/team");
|
||||||
};
|
};
|
||||||
|
|
||||||
match Team::create(&db, &form.name, &route).await {
|
let id = match Team::create(&db, &form.name, &route).await {
|
||||||
Ok(()) => succ!(session, "Team '{}' erfolgreich erstellt!", form.name),
|
Ok(id) => {
|
||||||
Err(CreateError::DuplicateName(e)) => err!(
|
succ!(session, "Team '{}' erfolgreich erstellt!", form.name);
|
||||||
|
id
|
||||||
|
}
|
||||||
|
Err(CreateError::DuplicateName(e)) => {
|
||||||
|
err!(
|
||||||
session,
|
session,
|
||||||
"Team '{}' konnte _NICHT_ erstellt werden, da es bereits ein Team mit diesem Namen gibt ({e})!",
|
"Team '{}' konnte _NICHT_ erstellt werden, da es bereits ein Team mit diesem Namen gibt ({e})!",
|
||||||
form.name
|
form.name
|
||||||
),
|
);
|
||||||
Err(CreateError::NoStationForRoute) => err!(
|
|
||||||
|
return Redirect::to("/admin/team");
|
||||||
|
}
|
||||||
|
Err(CreateError::NoStationForRoute) => {
|
||||||
|
err!(
|
||||||
session,
|
session,
|
||||||
"Team '{}' konnte _NICHT_ erstellt werden, da in der angegebenen Route '{}' noch keine Stationen vorkommen",
|
"Team '{}' konnte _NICHT_ erstellt werden, da in der angegebenen Route '{}' noch keine Stationen vorkommen",
|
||||||
form.name,
|
form.name,
|
||||||
route.name
|
route.name
|
||||||
),
|
);
|
||||||
}
|
|
||||||
|
|
||||||
Redirect::to("/admin/team")
|
return Redirect::to("/admin/team");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Redirect::to(&format!("/admin/team/{}", id))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn delete(
|
async fn delete(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user