diff --git a/api/controllers/console/app/workflow_trigger.py b/api/controllers/console/app/workflow_trigger.py index 506bd98dfd..2d370c3e1a 100644 --- a/api/controllers/console/app/workflow_trigger.py +++ b/api/controllers/console/app/workflow_trigger.py @@ -12,8 +12,9 @@ from controllers.console.wraps import account_initialization_required, setup_req from extensions.ext_database import db from fields.workflow_trigger_fields import trigger_fields, triggers_list_fields, webhook_trigger_fields from libs.login import current_user, login_required +from models.enums import AppTriggerStatus from models.model import Account, AppMode -from models.trigger import AppTrigger, AppTriggerStatus, WorkflowWebhookTrigger +from models.trigger import AppTrigger, WorkflowWebhookTrigger logger = logging.getLogger(__name__) diff --git a/api/events/event_handlers/update_app_triggers_when_app_published_workflow_updated.py b/api/events/event_handlers/update_app_triggers_when_app_published_workflow_updated.py index 39fe8ab26f..430514ada2 100644 --- a/api/events/event_handlers/update_app_triggers_when_app_published_workflow_updated.py +++ b/api/events/event_handlers/update_app_triggers_when_app_published_workflow_updated.py @@ -7,7 +7,8 @@ from core.workflow.nodes import NodeType from events.app_event import app_published_workflow_was_updated from extensions.ext_database import db from models import AppMode -from models.trigger import AppTrigger, AppTriggerStatus +from models.enums import AppTriggerStatus +from models.trigger import AppTrigger from models.workflow import Workflow diff --git a/api/models/__init__.py b/api/models/__init__.py index 1589305165..d5e017e036 100644 --- a/api/models/__init__.py +++ b/api/models/__init__.py @@ -26,7 +26,14 @@ from .dataset import ( TidbAuthBinding, Whitelist, ) -from .enums import CreatorUserRole, UserFrom, WorkflowRunTriggeredFrom +from .enums import ( + AppTriggerStatus, + AppTriggerType, + CreatorUserRole, + UserFrom, + WorkflowRunTriggeredFrom, + WorkflowTriggerStatus, +) from .model import ( ApiRequest, ApiToken, @@ -81,8 +88,6 @@ from .tools import ( ) from .trigger import ( AppTrigger, - AppTriggerStatus, - AppTriggerType, TriggerOAuthSystemClient, TriggerOAuthTenantClient, TriggerSubscription, @@ -196,5 +201,6 @@ __all__ = [ "WorkflowRunTriggeredFrom", "WorkflowSchedulePlan", "WorkflowToolProvider", + "WorkflowTriggerStatus", "WorkflowType", ] diff --git a/api/models/enums.py b/api/models/enums.py index afd3c5464b..fc9d71a2bd 100644 --- a/api/models/enums.py +++ b/api/models/enums.py @@ -1,5 +1,7 @@ from enum import StrEnum +from core.workflow.enums import NodeType + class CreatorUserRole(StrEnum): ACCOUNT = "account" @@ -41,3 +43,31 @@ class ExecutionOffLoadType(StrEnum): INPUTS = "inputs" PROCESS_DATA = "process_data" OUTPUTS = "outputs" + + +class WorkflowTriggerStatus(StrEnum): + """Workflow Trigger Execution Status""" + + PENDING = "pending" + QUEUED = "queued" + RUNNING = "running" + SUCCEEDED = "succeeded" + FAILED = "failed" + RATE_LIMITED = "rate_limited" + RETRYING = "retrying" + + +class AppTriggerStatus(StrEnum): + """App Trigger Status Enum""" + + ENABLED = "enabled" + DISABLED = "disabled" + UNAUTHORIZED = "unauthorized" + + +class AppTriggerType(StrEnum): + """App Trigger Type Enum""" + + TRIGGER_WEBHOOK = NodeType.TRIGGER_WEBHOOK.value + TRIGGER_SCHEDULE = NodeType.TRIGGER_SCHEDULE.value + TRIGGER_PLUGIN = NodeType.TRIGGER_PLUGIN.value diff --git a/api/models/trigger.py b/api/models/trigger.py index 351b4c2868..325a1e8c50 100644 --- a/api/models/trigger.py +++ b/api/models/trigger.py @@ -2,7 +2,6 @@ import json import time from collections.abc import Mapping from datetime import datetime -from enum import StrEnum from typing import Any, Optional, cast import sqlalchemy as sa @@ -13,11 +12,10 @@ from core.plugin.entities.plugin_daemon import CredentialType from core.trigger.entities.api_entities import TriggerProviderSubscriptionApiEntity from core.trigger.entities.entities import Subscription from core.trigger.utils.endpoint import parse_endpoint_id -from core.workflow.enums import NodeType from extensions.ext_database import db from libs.datetime_utils import naive_utc_now from models.base import Base -from models.enums import CreatorUserRole +from models.enums import AppTriggerStatus, AppTriggerType, CreatorUserRole, WorkflowTriggerStatus from models.model import Account from models.types import EnumText, StringUUID @@ -149,18 +147,6 @@ class TriggerOAuthTenantClient(Base): return cast(Mapping[str, Any], json.loads(self.encrypted_oauth_params or "{}")) -class WorkflowTriggerStatus(StrEnum): - """Workflow Trigger Execution Status""" - - PENDING = "pending" - QUEUED = "queued" - RUNNING = "running" - SUCCEEDED = "succeeded" - FAILED = "failed" - RATE_LIMITED = "rate_limited" - RETRYING = "retrying" - - class WorkflowTriggerLog(Base): """ Workflow Trigger Log @@ -349,22 +335,6 @@ class WorkflowPluginTrigger(Base): ) -class AppTriggerType(StrEnum): - """App Trigger Type Enum""" - - TRIGGER_WEBHOOK = NodeType.TRIGGER_WEBHOOK.value - TRIGGER_SCHEDULE = NodeType.TRIGGER_SCHEDULE.value - TRIGGER_PLUGIN = NodeType.TRIGGER_PLUGIN.value - - -class AppTriggerStatus(StrEnum): - """App Trigger Status Enum""" - - ENABLED = "enabled" - DISABLED = "disabled" - UNAUTHORIZED = "unauthorized" - - class AppTrigger(Base): """ App Trigger diff --git a/api/repositories/sqlalchemy_workflow_trigger_log_repository.py b/api/repositories/sqlalchemy_workflow_trigger_log_repository.py index 609a802b73..f0ccc0a2ba 100644 --- a/api/repositories/sqlalchemy_workflow_trigger_log_repository.py +++ b/api/repositories/sqlalchemy_workflow_trigger_log_repository.py @@ -9,7 +9,8 @@ from typing import Any, Optional from sqlalchemy import and_, delete, func, select, update from sqlalchemy.orm import Session -from models.trigger import WorkflowTriggerLog, WorkflowTriggerStatus +from models.enums import WorkflowTriggerStatus +from models.trigger import WorkflowTriggerLog from repositories.workflow_trigger_log_repository import TriggerLogOrderBy, WorkflowTriggerLogRepository diff --git a/api/repositories/workflow_trigger_log_repository.py b/api/repositories/workflow_trigger_log_repository.py index 634b6b831c..1c026c2f5d 100644 --- a/api/repositories/workflow_trigger_log_repository.py +++ b/api/repositories/workflow_trigger_log_repository.py @@ -11,7 +11,8 @@ from datetime import datetime from enum import StrEnum from typing import Optional, Protocol -from models.trigger import WorkflowTriggerLog, WorkflowTriggerStatus +from models.enums import WorkflowTriggerStatus +from models.trigger import WorkflowTriggerLog class TriggerLogOrderBy(StrEnum): diff --git a/api/services/async_workflow_service.py b/api/services/async_workflow_service.py index e7618686c5..72744f18dc 100644 --- a/api/services/async_workflow_service.py +++ b/api/services/async_workflow_service.py @@ -16,9 +16,9 @@ from sqlalchemy.orm import Session from extensions.ext_database import db from extensions.ext_redis import redis_client from models.account import Account -from models.enums import CreatorUserRole +from models.enums import CreatorUserRole, WorkflowTriggerStatus from models.model import App, EndUser -from models.trigger import WorkflowTriggerLog, WorkflowTriggerStatus +from models.trigger import WorkflowTriggerLog from models.workflow import Workflow from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository from services.errors.app import InvokeDailyRateLimitError, WorkflowNotFoundError diff --git a/api/services/trigger/webhook_service.py b/api/services/trigger/webhook_service.py index 3e6686119f..a9433872c4 100644 --- a/api/services/trigger/webhook_service.py +++ b/api/services/trigger/webhook_service.py @@ -21,9 +21,9 @@ from core.workflow.enums import NodeType from extensions.ext_database import db from extensions.ext_redis import redis_client from factories import file_factory -from models.enums import WorkflowRunTriggeredFrom +from models.enums import AppTriggerStatus, AppTriggerType, WorkflowRunTriggeredFrom from models.model import App -from models.trigger import AppTrigger, AppTriggerStatus, AppTriggerType, WorkflowWebhookTrigger +from models.trigger import AppTrigger, WorkflowWebhookTrigger from models.workflow import Workflow from services.async_workflow_service import AsyncWorkflowService from services.end_user_service import EndUserService diff --git a/api/tasks/async_workflow_tasks.py b/api/tasks/async_workflow_tasks.py index 6ad47f3b30..1bf99c66bf 100644 --- a/api/tasks/async_workflow_tasks.py +++ b/api/tasks/async_workflow_tasks.py @@ -18,9 +18,9 @@ from core.app.apps.workflow.app_generator import WorkflowAppGenerator from core.app.entities.app_invoke_entities import InvokeFrom from extensions.ext_database import db from models.account import Account -from models.enums import CreatorUserRole +from models.enums import CreatorUserRole, WorkflowTriggerStatus from models.model import App, EndUser, Tenant -from models.trigger import WorkflowTriggerLog, WorkflowTriggerStatus +from models.trigger import WorkflowTriggerLog from models.workflow import Workflow from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository from services.errors.app import WorkflowNotFoundError