Coverage for dibbler / queries / adjust_balance.py: 25%
12 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-25 14:26 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-25 14:26 +0000
1from datetime import datetime
3from sqlalchemy.orm import Session
5from dibbler.models import Transaction, User
8def adjust_balance(
9 sql_session: Session,
10 user: User,
11 amount: int,
12 time: datetime | None = None,
13 message: str | None = None,
14) -> Transaction:
15 if user.id is None:
16 raise ValueError("User must be persisted in the database.")
18 if amount == 0:
19 raise ValueError("Amount must be non-zero.")
21 # TODO: verify time is not behind last transaction's time
23 transaction = Transaction.adjust_balance(
24 user_id=user.id,
25 amount=amount,
26 time=time,
27 message=message,
28 )
30 sql_session.add(transaction)
31 sql_session.commit()
33 return transaction