Block creation of identical movements
This commit is contained in:
parent
b4cf6624f7
commit
08538c3911
@ -44,7 +44,15 @@ impl UpdateMovementQuery {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO : check for conflict
|
// Check for conflict with other movements
|
||||||
|
if let Ok(_) =
|
||||||
|
get_by_account_label_amount_time(self.account_id, &self.label, self.amount, self.time)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
return Ok(Some(
|
||||||
|
"A movement taken at the same time with the same label and the same amount already exists!",
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
Ok(None)
|
Ok(None)
|
||||||
}
|
}
|
||||||
@ -87,3 +95,28 @@ pub async fn update(id: MovementID, q: &UpdateMovementQuery) -> anyhow::Result<(
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get a single movement by its id
|
||||||
|
pub async fn get_by_id(movement_id: MovementID) -> anyhow::Result<Movement> {
|
||||||
|
Ok(movements::table
|
||||||
|
.filter(movements::dsl::id.eq(movement_id.0))
|
||||||
|
.get_result(&mut db()?)?)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get a single movement by account_id, label, amount and time
|
||||||
|
pub async fn get_by_account_label_amount_time(
|
||||||
|
account_id: AccountID,
|
||||||
|
label: &str,
|
||||||
|
amount: f32,
|
||||||
|
time: u64,
|
||||||
|
) -> anyhow::Result<Movement> {
|
||||||
|
Ok(movements::table
|
||||||
|
.filter(
|
||||||
|
movements::dsl::account_id
|
||||||
|
.eq(account_id.0)
|
||||||
|
.and(movements::dsl::label.eq(label))
|
||||||
|
.and(movements::dsl::amount.eq(amount))
|
||||||
|
.and(movements::dsl::time.eq(time as i64)),
|
||||||
|
)
|
||||||
|
.get_result(&mut db()?)?)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user