don't allow to join as user if already cox
This commit is contained in:
@ -56,7 +56,7 @@ WHERE day=?",
|
||||
ret
|
||||
}
|
||||
|
||||
pub async fn rower_can_register(db: &SqlitePool, trip_details_id: i64) -> bool {
|
||||
pub async fn is_full(db: &SqlitePool, trip_details_id: i64) -> bool {
|
||||
let amount_currently_registered = sqlx::query!(
|
||||
"SELECT COUNT(*) as count FROM user_trip WHERE trip_details_id = ?",
|
||||
trip_details_id
|
||||
@ -75,7 +75,7 @@ WHERE day=?",
|
||||
.unwrap(); //TODO: fixme
|
||||
let amount_allowed_to_register = amount_allowed_to_register.max_people;
|
||||
|
||||
amount_currently_registered < amount_allowed_to_register
|
||||
amount_currently_registered >= amount_allowed_to_register
|
||||
}
|
||||
|
||||
async fn get_all_cox_for_id(db: &SqlitePool, id: i64) -> Vec<Registration> {
|
||||
|
@ -1,17 +1,45 @@
|
||||
use sqlx::SqlitePool;
|
||||
|
||||
use super::planned_event::PlannedEvent;
|
||||
|
||||
pub struct UserTrip {}
|
||||
|
||||
impl UserTrip {
|
||||
pub async fn create(db: &SqlitePool, user_id: i64, trip_details_id: i64) -> bool {
|
||||
sqlx::query!(
|
||||
pub async fn create(
|
||||
db: &SqlitePool,
|
||||
user_id: i64,
|
||||
trip_details_id: i64,
|
||||
) -> Result<(), UserTripError> {
|
||||
if PlannedEvent::is_full(db, trip_details_id).await {
|
||||
return Err(UserTripError::EventAlreadyFull);
|
||||
}
|
||||
|
||||
let is_cox = sqlx::query!(
|
||||
"SELECT count(*) as amount
|
||||
FROM trip
|
||||
WHERE trip_details_id = ?
|
||||
AND cox_id = ?",
|
||||
trip_details_id,
|
||||
user_id
|
||||
)
|
||||
.fetch_one(db)
|
||||
.await
|
||||
.unwrap();
|
||||
if is_cox.amount > 0 {
|
||||
return Err(UserTripError::AlreadyRegisteredAsCox);
|
||||
}
|
||||
|
||||
match sqlx::query!(
|
||||
"INSERT INTO user_trip (user_id, trip_details_id) VALUES(?, ?)",
|
||||
user_id,
|
||||
trip_details_id
|
||||
)
|
||||
.execute(db)
|
||||
.await
|
||||
.is_ok()
|
||||
{
|
||||
Ok(_) => Ok(()),
|
||||
Err(_) => Err(UserTripError::AlreadyRegistered),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn delete(db: &SqlitePool, user_id: i64, trip_details_id: i64) {
|
||||
@ -25,3 +53,9 @@ impl UserTrip {
|
||||
.is_ok();
|
||||
}
|
||||
}
|
||||
|
||||
pub enum UserTripError {
|
||||
AlreadyRegistered,
|
||||
AlreadyRegisteredAsCox,
|
||||
EventAlreadyFull,
|
||||
}
|
||||
|
Reference in New Issue
Block a user