boatshouse functionality, fixes #183
All checks were successful
CI/CD Pipeline / test (push) Successful in 10m13s
CI/CD Pipeline / deploy-staging (push) Has been skipped
CI/CD Pipeline / deploy-main (push) Has been skipped

This commit is contained in:
2024-03-08 13:13:20 +01:00
parent 7e6b577315
commit 3deb1e40fc
10 changed files with 292 additions and 0 deletions

View File

@ -181,6 +181,41 @@ ORDER BY amount_seats DESC
Self::boats_to_details(db, boats).await
}
pub async fn all_for_boatshouse(db: &SqlitePool) -> Vec<BoatWithDetails> {
let boats = sqlx::query_as!(
Boat,
"
SELECT
b.id,
b.name,
b.amount_seats,
b.location_id,
b.owner,
b.year_built,
b.boatbuilder,
b.default_shipmaster_only_steering,
b.default_destination,
b.skull,
b.external
FROM
boat AS b
LEFT JOIN
boathouse AS bh ON b.id = bh.boat_id
WHERE
b.external = false
AND b.location_id = (SELECT id FROM location WHERE name = 'Linz')
AND bh.id IS NULL -- This ensures the boat does not have an entry in the boathouse table
ORDER BY
b.name DESC;
"
)
.fetch_all(db)
.await
.unwrap(); //TODO: fixme
Self::boats_to_details(db, boats).await
}
pub async fn for_user(db: &SqlitePool, user: &User) -> Vec<BoatWithDetails> {
if user.has_role(db, "admin").await {
return Self::all(db).await;