from typing import List from sqlalchemy.orm import Session from app.crud.base import CRUDBase from app.models.transaction import Transaction from app.schemas.transaction import TransactionCreate, TransactionUpdate class CRUDTransaction(CRUDBase[Transaction, TransactionCreate, TransactionUpdate]): def get_by_user( self, db: Session, *, user_id: int, skip: int = 0, limit: int = 100 ) -> List[Transaction]: return ( db.query(Transaction) .filter(Transaction.user_id == user_id) .order_by(Transaction.created_at.desc()) .offset(skip) .limit(limit) .all() ) def get_by_wallet( self, db: Session, *, wallet_id: int, skip: int = 0, limit: int = 100 ) -> List[Transaction]: return ( db.query(Transaction) .filter(Transaction.wallet_id == wallet_id) .order_by(Transaction.created_at.desc()) .offset(skip) .limit(limit) .all() ) def get_by_type( self, db: Session, *, transaction_type: str, skip: int = 0, limit: int = 100 ) -> List[Transaction]: return ( db.query(Transaction) .filter(Transaction.transaction_type == transaction_type) .order_by(Transaction.created_at.desc()) .offset(skip) .limit(limit) .all() ) def get_all( self, db: Session, *, skip: int = 0, limit: int = 100 ) -> List[Transaction]: return ( db.query(Transaction) .order_by(Transaction.created_at.desc()) .offset(skip) .limit(limit) .all() ) transaction = CRUDTransaction(Transaction) # Aliases for convenience get_transaction = transaction.get create_transaction = transaction.create update_transaction = transaction.update get_transactions_by_user = transaction.get_by_user get_transactions_by_wallet = transaction.get_by_wallet get_transactions_by_type = transaction.get_by_type get_all_transactions = transaction.get_all