From c5404004965cc8787f54950a43bc1e7f21a57ee4 Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Fri, 26 Sep 2025 14:38:13 +0800 Subject: [PATCH] feat(server): allow drop session (#13650) ## Summary by CodeRabbit * **Bug Fixes** * Ensures deleted sessions and their messages are consistently cleaned up, preventing lingering pinned or partially removed items. * **Refactor** * Streamlined session cleanup into a single bulk operation for improved reliability and performance during deletions. --- .../server/src/models/copilot-session.ts | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/backend/server/src/models/copilot-session.ts b/packages/backend/server/src/models/copilot-session.ts index 7912e5373d..4c2e8db9de 100644 --- a/packages/backend/server/src/models/copilot-session.ts +++ b/packages/backend/server/src/models/copilot-session.ts @@ -459,27 +459,19 @@ export class CopilotSessionModel extends BaseModel { docId: options.docId, deletedAt: null, }, - select: { id: true, prompt: true }, + select: { id: true }, }); + const sessionIds = sessions.map(({ id }) => id); // cleanup all messages await this.db.aiSessionMessage.deleteMany({ where: { sessionId: { in: sessionIds } }, }); - // only mark action session as deleted - // chat session always can be reuse - const actionIds = sessions - .filter(({ prompt }) => !!prompt.action) - .map(({ id }) => id); - - // 标记 action session 为已删除 - if (actionIds.length > 0) { - await this.db.aiSession.updateMany({ - where: { id: { in: actionIds } }, - data: { pinned: false, deletedAt: new Date() }, - }); - } + await this.db.aiSession.updateMany({ + where: { id: { in: sessionIds } }, + data: { pinned: false, deletedAt: new Date() }, + }); return sessionIds; }