paired: preserve prior owner and reviewer finals across superseded tasks

This commit is contained in:
ejclaw
2026-04-22 06:02:27 +09:00
parent 1122ace363
commit 091f34ed23
7 changed files with 235 additions and 4 deletions

View File

@@ -254,6 +254,26 @@ export function getLatestOpenPairedTaskForChatFromDatabase(
return row ? hydratePairedTaskRow(database, row) : undefined;
}
export function getLatestPreviousPairedTaskForChatFromDatabase(
database: Database,
chatJid: string,
currentTaskId: string,
): PairedTask | undefined {
const row = database
.prepare(
`
SELECT *
FROM paired_tasks
WHERE chat_jid = ?
AND id != ?
ORDER BY updated_at DESC, created_at DESC
LIMIT 1
`,
)
.get(chatJid, currentTaskId) as StoredPairedTaskRow | undefined;
return row ? hydratePairedTaskRow(database, row) : undefined;
}
export function updatePairedTaskInDatabase(
database: Database,
id: string,

View File

@@ -26,6 +26,7 @@ import {
createPairedTaskInDatabase,
getLastBotFinalMessageFromDatabase,
getLatestOpenPairedTaskForChatFromDatabase,
getLatestPreviousPairedTaskForChatFromDatabase,
getLatestPairedTaskForChatFromDatabase,
getPairedProjectFromDatabase,
getPairedTaskByIdFromDatabase,
@@ -101,6 +102,17 @@ export function getLatestOpenPairedTaskForChat(
return getLatestOpenPairedTaskForChatFromDatabase(requireDatabase(), chatJid);
}
export function getLatestPreviousPairedTaskForChat(
chatJid: string,
currentTaskId: string,
): PairedTask | undefined {
return getLatestPreviousPairedTaskForChatFromDatabase(
requireDatabase(),
chatJid,
currentTaskId,
);
}
export function updatePairedTask(id: string, updates: PairedTaskUpdates): void {
updatePairedTaskInDatabase(requireDatabase(), id, updates);
}