feat(data): add TaskRepository.ResetToManualAsync

This commit is contained in:
Mika Kuns
2026-04-21 17:26:01 +02:00
parent 88be19a231
commit 202236a45b
2 changed files with 40 additions and 0 deletions

View File

@@ -98,6 +98,17 @@ public sealed class TaskRepository
.SetProperty(t => t.Result, resultText), ct); .SetProperty(t => t.Result, resultText), ct);
} }
public async Task ResetToManualAsync(string taskId, CancellationToken ct = default)
{
await _context.Tasks
.Where(t => t.Id == taskId)
.ExecuteUpdateAsync(s => s
.SetProperty(t => t.Status, TaskStatus.Manual)
.SetProperty(t => t.StartedAt, (DateTime?)null)
.SetProperty(t => t.FinishedAt, (DateTime?)null)
.SetProperty(t => t.Result, (string?)null), ct);
}
#endregion #endregion
#region Tags #region Tags

View File

@@ -198,6 +198,35 @@ public sealed class TaskRepositoryTests : IDisposable
Assert.Equal(TaskStatus.Done, d!.Status); Assert.Equal(TaskStatus.Done, d!.Status);
} }
[Fact]
public async Task ResetToManualAsync_ClearsResultFields_AndSetsStatusManual()
{
var listId = await CreateListAsync();
var task = new TaskEntity
{
Id = Guid.NewGuid().ToString(),
ListId = listId,
Title = "T",
CreatedAt = DateTime.UtcNow,
Status = TaskStatus.Failed,
StartedAt = DateTime.UtcNow.AddMinutes(-5),
FinishedAt = DateTime.UtcNow,
Result = "boom",
CommitType = "feat",
};
await _tasks.AddAsync(task);
await _tasks.ResetToManualAsync(task.Id);
using var readCtx = _db.CreateContext();
var after = await new TaskRepository(readCtx).GetByIdAsync(task.Id);
Assert.NotNull(after);
Assert.Equal(TaskStatus.Manual, after!.Status);
Assert.Null(after.StartedAt);
Assert.Null(after.FinishedAt);
Assert.Null(after.Result);
}
[Fact] [Fact]
public async Task GetEffectiveTagsAsync_Returns_Union_Of_ListTags_And_TaskTags() public async Task GetEffectiveTagsAsync_Returns_Union_Of_ListTags_And_TaskTags()
{ {