From d09913848751edd526da46337a1a487a5efb205d Mon Sep 17 00:00:00 2001 From: mika kuns Date: Thu, 23 Apr 2026 17:58:28 +0200 Subject: [PATCH] feat(data): TaskRepository.UpdatePlanningSessionIdAsync --- src/ClaudeDo.Data/Repositories/TaskRepository.cs | 11 +++++++++++ .../Repositories/TaskRepositoryPlanningTests.cs | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/ClaudeDo.Data/Repositories/TaskRepository.cs b/src/ClaudeDo.Data/Repositories/TaskRepository.cs index 96fee59..3fd2ad2 100644 --- a/src/ClaudeDo.Data/Repositories/TaskRepository.cs +++ b/src/ClaudeDo.Data/Repositories/TaskRepository.cs @@ -282,6 +282,17 @@ public sealed class TaskRepository return await _context.Tasks.AsNoTracking().FirstOrDefaultAsync(t => t.Id == taskId, ct); } + public async Task UpdatePlanningSessionIdAsync( + string parentId, + string sessionId, + CancellationToken ct = default) + { + await _context.Tasks + .Where(t => t.Id == parentId) + .ExecuteUpdateAsync(s => s + .SetProperty(t => t.PlanningSessionId, sessionId), ct); + } + #endregion #region Queue selection diff --git a/tests/ClaudeDo.Worker.Tests/Repositories/TaskRepositoryPlanningTests.cs b/tests/ClaudeDo.Worker.Tests/Repositories/TaskRepositoryPlanningTests.cs index e47b09c..3ba9c2a 100644 --- a/tests/ClaudeDo.Worker.Tests/Repositories/TaskRepositoryPlanningTests.cs +++ b/tests/ClaudeDo.Worker.Tests/Repositories/TaskRepositoryPlanningTests.cs @@ -152,4 +152,18 @@ public sealed class TaskRepositoryPlanningTests : IDisposable Assert.Equal(TaskStatus.Queued, loaded!.Status); Assert.Null(loaded.PlanningSessionToken); } + + [Fact] + public async Task UpdatePlanningSessionIdAsync_StoresClaudeSessionId() + { + var listId = await CreateListAsync(); + var task = MakeTask(listId, TaskStatus.Manual); + await _tasks.AddAsync(task); + await _tasks.SetPlanningStartedAsync(task.Id, "tok"); + + await _tasks.UpdatePlanningSessionIdAsync(task.Id, "claude-session-42"); + + var loaded = await _tasks.GetByIdAsync(task.Id); + Assert.Equal("claude-session-42", loaded!.PlanningSessionId); + } }