refactor: migrate session.query to select API in webhook service (#34849)

This commit is contained in:
aliworksx08 2026-04-09 09:16:33 -05:00 committed by GitHub
parent 8ad131bb3b
commit e143dbce50
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 21 deletions

View File

@ -104,32 +104,32 @@ class WebhookService:
""" """
with Session(db.engine) as session: with Session(db.engine) as session:
# Get webhook trigger # Get webhook trigger
webhook_trigger = ( webhook_trigger = session.scalar(
session.query(WorkflowWebhookTrigger).where(WorkflowWebhookTrigger.webhook_id == webhook_id).first() select(WorkflowWebhookTrigger).where(WorkflowWebhookTrigger.webhook_id == webhook_id).limit(1)
) )
if not webhook_trigger: if not webhook_trigger:
raise ValueError(f"Webhook not found: {webhook_id}") raise ValueError(f"Webhook not found: {webhook_id}")
if is_debug: if is_debug:
workflow = ( workflow = session.scalar(
session.query(Workflow) select(Workflow)
.filter( .where(
Workflow.app_id == webhook_trigger.app_id, Workflow.app_id == webhook_trigger.app_id,
Workflow.version == Workflow.VERSION_DRAFT, Workflow.version == Workflow.VERSION_DRAFT,
) )
.order_by(Workflow.created_at.desc()) .order_by(Workflow.created_at.desc())
.first() .limit(1)
) )
else: else:
# Check if the corresponding AppTrigger exists # Check if the corresponding AppTrigger exists
app_trigger = ( app_trigger = session.scalar(
session.query(AppTrigger) select(AppTrigger)
.filter( .where(
AppTrigger.app_id == webhook_trigger.app_id, AppTrigger.app_id == webhook_trigger.app_id,
AppTrigger.node_id == webhook_trigger.node_id, AppTrigger.node_id == webhook_trigger.node_id,
AppTrigger.trigger_type == AppTriggerType.TRIGGER_WEBHOOK, AppTrigger.trigger_type == AppTriggerType.TRIGGER_WEBHOOK,
) )
.first() .limit(1)
) )
if not app_trigger: if not app_trigger:
@ -146,14 +146,14 @@ class WebhookService:
raise ValueError(f"Webhook trigger is disabled for webhook {webhook_id}") raise ValueError(f"Webhook trigger is disabled for webhook {webhook_id}")
# Get workflow # Get workflow
workflow = ( workflow = session.scalar(
session.query(Workflow) select(Workflow)
.filter( .where(
Workflow.app_id == webhook_trigger.app_id, Workflow.app_id == webhook_trigger.app_id,
Workflow.version != Workflow.VERSION_DRAFT, Workflow.version != Workflow.VERSION_DRAFT,
) )
.order_by(Workflow.created_at.desc()) .order_by(Workflow.created_at.desc())
.first() .limit(1)
) )
if not workflow: if not workflow:
raise ValueError(f"Workflow not found for app {webhook_trigger.app_id}") raise ValueError(f"Workflow not found for app {webhook_trigger.app_id}")

View File

@ -657,7 +657,7 @@ def _app(**kwargs: Any) -> App:
def test_get_webhook_trigger_and_workflow_should_raise_when_webhook_not_found(monkeypatch: pytest.MonkeyPatch) -> None: def test_get_webhook_trigger_and_workflow_should_raise_when_webhook_not_found(monkeypatch: pytest.MonkeyPatch) -> None:
# Arrange # Arrange
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.return_value = _FakeQuery(None) fake_session.scalar.return_value = None
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act / Assert # Act / Assert
@ -671,7 +671,7 @@ def test_get_webhook_trigger_and_workflow_should_raise_when_app_trigger_not_foun
# Arrange # Arrange
webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1") webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1")
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.side_effect = [_FakeQuery(webhook_trigger), _FakeQuery(None)] fake_session.scalar.side_effect = [webhook_trigger, None]
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act / Assert # Act / Assert
@ -686,7 +686,7 @@ def test_get_webhook_trigger_and_workflow_should_raise_when_app_trigger_rate_lim
webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1") webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1")
app_trigger = SimpleNamespace(status=AppTriggerStatus.RATE_LIMITED) app_trigger = SimpleNamespace(status=AppTriggerStatus.RATE_LIMITED)
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.side_effect = [_FakeQuery(webhook_trigger), _FakeQuery(app_trigger)] fake_session.scalar.side_effect = [webhook_trigger, app_trigger]
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act / Assert # Act / Assert
@ -701,7 +701,7 @@ def test_get_webhook_trigger_and_workflow_should_raise_when_app_trigger_disabled
webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1") webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1")
app_trigger = SimpleNamespace(status=AppTriggerStatus.DISABLED) app_trigger = SimpleNamespace(status=AppTriggerStatus.DISABLED)
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.side_effect = [_FakeQuery(webhook_trigger), _FakeQuery(app_trigger)] fake_session.scalar.side_effect = [webhook_trigger, app_trigger]
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act / Assert # Act / Assert
@ -714,7 +714,7 @@ def test_get_webhook_trigger_and_workflow_should_raise_when_workflow_not_found(m
webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1") webhook_trigger = SimpleNamespace(app_id="app-1", node_id="node-1")
app_trigger = SimpleNamespace(status=AppTriggerStatus.ENABLED) app_trigger = SimpleNamespace(status=AppTriggerStatus.ENABLED)
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.side_effect = [_FakeQuery(webhook_trigger), _FakeQuery(app_trigger), _FakeQuery(None)] fake_session.scalar.side_effect = [webhook_trigger, app_trigger, None]
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act / Assert # Act / Assert
@ -732,7 +732,7 @@ def test_get_webhook_trigger_and_workflow_should_return_values_for_non_debug_mod
workflow.get_node_config_by_id.return_value = {"data": {"key": "value"}} workflow.get_node_config_by_id.return_value = {"data": {"key": "value"}}
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.side_effect = [_FakeQuery(webhook_trigger), _FakeQuery(app_trigger), _FakeQuery(workflow)] fake_session.scalar.side_effect = [webhook_trigger, app_trigger, workflow]
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act # Act
@ -751,7 +751,7 @@ def test_get_webhook_trigger_and_workflow_should_return_values_for_debug_mode(mo
workflow.get_node_config_by_id.return_value = {"data": {"mode": "debug"}} workflow.get_node_config_by_id.return_value = {"data": {"mode": "debug"}}
fake_session = MagicMock() fake_session = MagicMock()
fake_session.query.side_effect = [_FakeQuery(webhook_trigger), _FakeQuery(workflow)] fake_session.scalar.side_effect = [webhook_trigger, workflow]
_patch_session(monkeypatch, fake_session) _patch_session(monkeypatch, fake_session)
# Act # Act