feat: planning sessions foundation (Plan A) #4
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user