clean code with clippy
Some checks are pending
CI/CD Pipeline / test (push) Waiting to run
CI/CD Pipeline / deploy-staging (push) Blocked by required conditions
CI/CD Pipeline / deploy-main (push) Blocked by required conditions

This commit is contained in:
2024-05-22 00:13:23 +02:00
parent 6b911f242a
commit 40f97f18a9
11 changed files with 151 additions and 124 deletions

View File

@ -34,6 +34,16 @@ pub struct TripWithUserAndType {
trip_type: Option<TripType>,
}
pub struct TripUpdate<'a> {
pub cox: &'a CoxUser,
pub trip: &'a Trip,
pub max_people: i32,
pub notes: Option<&'a str>,
pub trip_type: Option<i64>, //TODO: Move to `TripType`
pub always_show: bool,
pub is_locked: bool,
}
impl TripWithUserAndType {
pub async fn from(db: &SqlitePool, trip: Trip) -> Self {
let mut trip_type = None;
@ -177,40 +187,36 @@ WHERE day=?
/// Cox decides to update own trip.
pub async fn update_own(
db: &SqlitePool,
cox: &CoxUser,
trip: &Trip,
max_people: i32,
notes: Option<&str>,
trip_type: Option<i64>, //TODO: Move to `TripType`
always_show: bool,
is_locked: bool,
update: &TripUpdate<'_>,
) -> Result<(), TripUpdateError> {
if !trip.is_trip_from_user(cox.id) {
if !update.trip.is_trip_from_user(update.cox.id) {
return Err(TripUpdateError::NotYourTrip);
}
let Some(trip_details_id) = trip.trip_details_id else {
let Some(trip_details_id) = update.trip.trip_details_id else {
return Err(TripUpdateError::TripDetailsDoesNotExist); //TODO: Remove?
};
sqlx::query!(
"UPDATE trip_details SET max_people = ?, notes = ?, trip_type_id = ?, always_show = ?, is_locked = ? WHERE id = ?",
max_people,
notes,
trip_type,
always_show,
is_locked,
update.max_people,
update.notes,
update.trip_type,
update.always_show,
update.is_locked,
trip_details_id
)
.execute(db)
.await
.unwrap(); //Okay, as trip_details can only be created with proper DB backing
if max_people == 0 {
let rowers = TripWithUserAndType::from(db, trip.clone()).await.rower;
if update.max_people == 0 {
let rowers = TripWithUserAndType::from(db, update.trip.clone())
.await
.rower;
for user in rowers {
if let Some(user) = User::find_by_name(db, &user.name).await {
let notes = match notes {
let notes = match update.notes {
Some(n) if !n.is_empty() => n,
_ => ".",
};
@ -220,7 +226,10 @@ WHERE day=?
&user,
&format!(
"Die Ausfahrt von {} am {} um {} wurde abgesagt{}",
cox.user.name, trip.day, trip.planned_starting_time, notes
update.cox.user.name,
update.trip.day,
update.trip.planned_starting_time,
notes
),
"Absage Ausfahrt",
None,
@ -349,7 +358,7 @@ mod test {
use crate::{
model::{
planned_event::PlannedEvent,
trip::TripDeleteError,
trip::{self, TripDeleteError},
tripdetails::TripDetails,
user::{CoxUser, User},
usertrip::UserTrip,
@ -434,11 +443,17 @@ mod test {
let trip = Trip::find_by_id(&pool, 1).await.unwrap();
assert!(
Trip::update_own(&pool, &cox, &trip, 10, None, None, false, false)
.await
.is_ok()
);
let update = trip::TripUpdate {
cox: &cox,
trip: &trip,
max_people: 10,
notes: None,
trip_type: None,
always_show: false,
is_locked: false,
};
assert!(Trip::update_own(&pool, &update).await.is_ok());
let trip = Trip::find_by_id(&pool, 1).await.unwrap();
assert_eq!(trip.max_people, 10);
@ -457,11 +472,16 @@ mod test {
let trip = Trip::find_by_id(&pool, 1).await.unwrap();
assert!(
Trip::update_own(&pool, &cox, &trip, 10, None, Some(1), false, false)
.await
.is_ok()
);
let update = trip::TripUpdate {
cox: &cox,
trip: &trip,
max_people: 10,
notes: None,
trip_type: Some(1),
always_show: false,
is_locked: false,
};
assert!(Trip::update_own(&pool, &update).await.is_ok());
let trip = Trip::find_by_id(&pool, 1).await.unwrap();
assert_eq!(trip.max_people, 10);
@ -481,11 +501,16 @@ mod test {
let trip = Trip::find_by_id(&pool, 1).await.unwrap();
assert!(
Trip::update_own(&pool, &cox, &trip, 10, None, None, false, false)
.await
.is_err()
);
let update = trip::TripUpdate {
cox: &cox,
trip: &trip,
max_people: 10,
notes: None,
trip_type: None,
always_show: false,
is_locked: false,
};
assert!(Trip::update_own(&pool, &update).await.is_err());
assert_eq!(trip.max_people, 1);
}