Initial project commit

This commit is contained in:
2026-05-09 16:40:29 +08:00
commit 02b0259a9e
267 changed files with 54891 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models.point_ledger import PointLedger
async def grant_points(
db: AsyncSession,
user_id: int,
change: int,
reason: str,
ref_type: str | None = None,
ref_id: int | None = None,
) -> PointLedger:
last_entry = await db.execute(
select(PointLedger)
.where(PointLedger.user_id == user_id)
.order_by(PointLedger.id.desc())
.limit(1)
)
last = last_entry.scalar_one_or_none()
current_balance = last.balance if last else 0
ledger = PointLedger(
user_id=user_id,
change=change,
balance=current_balance + change,
reason=reason,
ref_type=ref_type,
ref_id=ref_id,
)
db.add(ledger)
await db.flush()
return ledger