From 3c23375607222ec6d8b2f4c3b4ed62853bd3b37a Mon Sep 17 00:00:00 2001 From: heyszt <270985384@qq.com> Date: Tue, 4 Nov 2025 09:53:22 +0800 Subject: [PATCH 1/2] refactor: Use Repository Pattern for Model Layer (#27663) --- api/models/model.py | 8 ++++++-- api/models/workflow.py | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/api/models/model.py b/api/models/model.py index bf5f764976..9b7db259dd 100644 --- a/api/models/model.py +++ b/api/models/model.py @@ -1219,9 +1219,13 @@ class Message(Base): @property def workflow_run(self): if self.workflow_run_id: - from .workflow import WorkflowRun + from sqlalchemy.orm import sessionmaker - return db.session.query(WorkflowRun).where(WorkflowRun.id == self.workflow_run_id).first() + from repositories.factory import DifyAPIRepositoryFactory + + session_maker = sessionmaker(bind=db.engine, expire_on_commit=False) + repo = DifyAPIRepositoryFactory.create_api_workflow_run_repository(session_maker) + return repo.get_workflow_run_by_id_without_tenant(run_id=self.workflow_run_id) return None diff --git a/api/models/workflow.py b/api/models/workflow.py index d312b96b39..1982b1bf19 100644 --- a/api/models/workflow.py +++ b/api/models/workflow.py @@ -1058,7 +1058,16 @@ class WorkflowAppLog(Base): @property def workflow_run(self): - return db.session.get(WorkflowRun, self.workflow_run_id) + if self.workflow_run_id: + from sqlalchemy.orm import sessionmaker + + from repositories.factory import DifyAPIRepositoryFactory + + session_maker = sessionmaker(bind=db.engine, expire_on_commit=False) + repo = DifyAPIRepositoryFactory.create_api_workflow_run_repository(session_maker) + return repo.get_workflow_run_by_id_without_tenant(run_id=self.workflow_run_id) + + return None @property def created_by_account(self): From 94cd2de940c6f88c138026c91515ebfa2e991870 Mon Sep 17 00:00:00 2001 From: Tianzhi Jin Date: Tue, 4 Nov 2025 09:55:47 +0800 Subject: [PATCH 2/2] fix(api): return timestamp as integer in document api (#27761) --- api/controllers/console/datasets/datasets_document.py | 4 ++-- api/controllers/service_api/dataset/document.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/controllers/console/datasets/datasets_document.py b/api/controllers/console/datasets/datasets_document.py index 85fd0535c7..f398989d27 100644 --- a/api/controllers/console/datasets/datasets_document.py +++ b/api/controllers/console/datasets/datasets_document.py @@ -746,7 +746,7 @@ class DocumentApi(DocumentResource): "name": document.name, "created_from": document.created_from, "created_by": document.created_by, - "created_at": document.created_at.timestamp(), + "created_at": int(document.created_at.timestamp()), "tokens": document.tokens, "indexing_status": document.indexing_status, "completed_at": int(document.completed_at.timestamp()) if document.completed_at else None, @@ -779,7 +779,7 @@ class DocumentApi(DocumentResource): "name": document.name, "created_from": document.created_from, "created_by": document.created_by, - "created_at": document.created_at.timestamp(), + "created_at": int(document.created_at.timestamp()), "tokens": document.tokens, "indexing_status": document.indexing_status, "completed_at": int(document.completed_at.timestamp()) if document.completed_at else None, diff --git a/api/controllers/service_api/dataset/document.py b/api/controllers/service_api/dataset/document.py index 893cd7c923..358605e8a8 100644 --- a/api/controllers/service_api/dataset/document.py +++ b/api/controllers/service_api/dataset/document.py @@ -592,7 +592,7 @@ class DocumentApi(DatasetApiResource): "name": document.name, "created_from": document.created_from, "created_by": document.created_by, - "created_at": document.created_at.timestamp(), + "created_at": int(document.created_at.timestamp()), "tokens": document.tokens, "indexing_status": document.indexing_status, "completed_at": int(document.completed_at.timestamp()) if document.completed_at else None, @@ -625,7 +625,7 @@ class DocumentApi(DatasetApiResource): "name": document.name, "created_from": document.created_from, "created_by": document.created_by, - "created_at": document.created_at.timestamp(), + "created_at": int(document.created_at.timestamp()), "tokens": document.tokens, "indexing_status": document.indexing_status, "completed_at": int(document.completed_at.timestamp()) if document.completed_at else None,