from datetime import date from sqlalchemy.orm import aliased from sqlmodel import select from account.models import Account from account.schemas import OpeningTransaction from transaction.models import Transaction, Split class TransactionResource: @classmethod def create(cls, transaction, session): transaction_db = Transaction.model_validate(transaction) session.add(transaction_db) session.commit() session.refresh(transaction_db) return transaction_db @classmethod def list(cls): return select(Transaction).join(Split).join(Account) @classmethod def get(cls, session, transaction_id): return session.get(Transaction, transaction_id) @classmethod def update(cls, session, transaction_db, transaction_data): transaction_db.sqlmodel_update(Transaction.model_validate(transaction_data)) session.add(transaction_db) session.commit() session.refresh(transaction_db) return transaction_db @classmethod def delete(cls, session, transaction): session.delete(transaction) session.commit()