feat: Import-Rollback fuer bestaetigte Auszuege (v0.3.0)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -150,6 +150,25 @@ def confirm(statement_id: int, session: Session = Depends(get_session)):
|
||||
return StatementOut.model_validate(stmt)
|
||||
|
||||
|
||||
@router.post("/{statement_id}/rollback")
|
||||
def rollback(statement_id: int, session: Session = Depends(get_session)):
|
||||
stmt = session.get(Statement, statement_id)
|
||||
if stmt is None:
|
||||
raise HTTPException(404, "Import nicht gefunden")
|
||||
if stmt.status != "confirmed":
|
||||
raise HTTPException(409, "Nur bestätigte Importe können zurückgerollt werden")
|
||||
txs = session.execute(
|
||||
select(Transaction).where(Transaction.statement_id == statement_id)
|
||||
).scalars().all()
|
||||
deleted = len(txs)
|
||||
for tx in txs:
|
||||
session.delete(tx)
|
||||
session.flush()
|
||||
session.delete(stmt)
|
||||
session.commit()
|
||||
return {"deleted_transactions": deleted, "statement_id": statement_id}
|
||||
|
||||
|
||||
@router.delete("/{statement_id}", status_code=204)
|
||||
def delete_import(statement_id: int, session: Session = Depends(get_session)):
|
||||
stmt = session.get(Statement, statement_id)
|
||||
|
||||
Reference in New Issue
Block a user