invoices, order handling, db updates

This commit is contained in:
2026-02-14 23:09:21 +07:00
parent a3aaafd7ac
commit 50b1a8f80c
28 changed files with 508 additions and 44 deletions

45
repositories/invoices.py Normal file
View File

@@ -0,0 +1,45 @@
from typing import Optional
from sqlalchemy import select, update
from db.models import Invoice
from sqlalchemy.ext.asyncio import AsyncSession
from db.models.invoices import InvoiceStatus
class InvoiceRepository:
async def create_invoice(
self,
session: AsyncSession,
*,
amount: int,
creator_id: int,
inline_message_id: Optional[int] = None,
status: InvoiceStatus = InvoiceStatus.PENDING,
) -> Invoice:
invoice = Invoice(
creator_id=creator_id,
amount=amount,
status=status,
inline_message_id=inline_message_id,
)
session.add(invoice)
await session.commit()
return invoice
async def get_invoice_by_id(
self, session: AsyncSession, invoice_id: int
) -> Optional[Invoice]:
stmt = select(Invoice).where(Invoice.id == invoice_id)
return await session.scalar(stmt)
async def update_invoice_msg(
self, session: AsyncSession, *, invoice_id: int, inline_message_id: int
):
stmt = (
update(Invoice.__table__)
.where(Invoice.id == invoice_id)
.values(inline_message_id=inline_message_id)
)
await session.execute(stmt)