refactor(sqlalchemy_workflow_execution_repository): Use the max funtion for getting next_sequence_number. (#20966)

This commit is contained in:
-LAN- 2025-06-13 09:42:02 +08:00 committed by GitHub
parent b2ac11bc47
commit c05e47ebc0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,7 +6,7 @@ import json
import logging import logging
from typing import Optional, Union from typing import Optional, Union
from sqlalchemy import select from sqlalchemy import func, select
from sqlalchemy.engine import Engine from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
@ -151,11 +151,11 @@ class SQLAlchemyWorkflowExecutionRepository(WorkflowExecutionRepository):
existing = session.scalar(select(WorkflowRun).where(WorkflowRun.id == domain_model.id_)) existing = session.scalar(select(WorkflowRun).where(WorkflowRun.id == domain_model.id_))
if not existing: if not existing:
# For new records, get the next sequence number # For new records, get the next sequence number
stmt = select(WorkflowRun.sequence_number).where( stmt = select(func.max(WorkflowRun.sequence_number)).where(
WorkflowRun.app_id == self._app_id, WorkflowRun.app_id == self._app_id,
WorkflowRun.tenant_id == self._tenant_id, WorkflowRun.tenant_id == self._tenant_id,
) )
max_sequence = session.scalar(stmt.order_by(WorkflowRun.sequence_number.desc())) max_sequence = session.scalar(stmt)
db_model.sequence_number = (max_sequence or 0) + 1 db_model.sequence_number = (max_sequence or 0) + 1
else: else:
# For updates, keep the existing sequence number # For updates, keep the existing sequence number