Spaces:
Running
Running
| from uuid import UUID | |
| from sqlalchemy.exc import IntegrityError | |
| from sqlmodel import col, select | |
| from sqlmodel.ext.asyncio.session import AsyncSession | |
| from langflow.services.database.models.transactions.model import TransactionBase, TransactionTable | |
| async def get_transactions_by_flow_id( | |
| db: AsyncSession, flow_id: UUID, limit: int | None = 1000 | |
| ) -> list[TransactionTable]: | |
| stmt = ( | |
| select(TransactionTable) | |
| .where(TransactionTable.flow_id == flow_id) | |
| .order_by(col(TransactionTable.timestamp)) | |
| .limit(limit) | |
| ) | |
| transactions = await db.exec(stmt) | |
| return list(transactions) | |
| async def log_transaction(db: AsyncSession, transaction: TransactionBase) -> TransactionTable: | |
| table = TransactionTable(**transaction.model_dump()) | |
| db.add(table) | |
| try: | |
| await db.commit() | |
| await db.refresh(table) | |
| except IntegrityError: | |
| await db.rollback() | |
| raise | |
| return table | |