2026-03-18 17:18:23 +08:00
|
|
|
"""Payment repository — Order data access."""
|
|
|
|
|
|
|
|
|
|
from sqlalchemy import select
|
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
|
|
|
|
|
|
from app.features.payment.models import Order
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def get_order_by_id(order_id: str, db: AsyncSession) -> Order | None:
|
|
|
|
|
return await db.get(Order, order_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def get_orders_by_user(user_id: str, db: AsyncSession) -> list[Order]:
|
2026-03-19 14:36:14 +08:00
|
|
|
stmt = (
|
|
|
|
|
select(Order).where(Order.user_id == user_id).order_by(Order.created_at.desc())
|
|
|
|
|
)
|
2026-03-18 17:18:23 +08:00
|
|
|
result = await db.execute(stmt)
|
|
|
|
|
return list(result.scalars().all())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def get_order_by_trade_no(out_trade_no: str, db: AsyncSession) -> Order | None:
|
|
|
|
|
stmt = select(Order).where(Order.id == out_trade_no)
|
|
|
|
|
result = await db.execute(stmt)
|
|
|
|
|
return result.scalar_one_or_none()
|