feat: initialize aivideo project
This commit is contained in:
43
backend/app/modules/wallets/repository.py
Normal file
43
backend/app/modules/wallets/repository.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import func, select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.entities import RechargeOrder, RechargePlan, RedeemCode, Wallet, WalletTransaction
|
||||
|
||||
|
||||
class WalletRepository:
|
||||
def __init__(self, db: Session) -> None:
|
||||
self.db = db
|
||||
|
||||
def lock_wallet(self, user_id: int) -> Wallet:
|
||||
return self.db.execute(
|
||||
select(Wallet).where(Wallet.user_id == user_id).with_for_update()
|
||||
).scalar_one()
|
||||
|
||||
def wallet_transactions(self, user_id: int):
|
||||
return self.db.query(WalletTransaction).filter(WalletTransaction.user_id == user_id)
|
||||
|
||||
def recharge_orders(self, user_id: int):
|
||||
return self.db.query(RechargeOrder).filter(RechargeOrder.user_id == user_id)
|
||||
|
||||
def get_recharge_plan(self, plan_id: int) -> RechargePlan | None:
|
||||
return self.db.scalar(select(RechargePlan).where(RechargePlan.id == plan_id))
|
||||
|
||||
def get_order_by_no(self, order_no: str) -> RechargeOrder | None:
|
||||
return self.db.scalar(select(RechargeOrder).where(RechargeOrder.order_no == order_no))
|
||||
|
||||
def lock_redeem_code(self, redeem_code: str) -> RedeemCode | None:
|
||||
return self.db.execute(
|
||||
select(RedeemCode)
|
||||
.where(RedeemCode.redeem_code == redeem_code)
|
||||
.with_for_update()
|
||||
).scalar_one_or_none()
|
||||
|
||||
def latest_transactions_count(self, user_id: int) -> int:
|
||||
return (
|
||||
self.db.query(func.count(WalletTransaction.id))
|
||||
.filter(WalletTransaction.user_id == user_id)
|
||||
.scalar()
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user