feat(worktrees): add GetOverviewAsync for overview modal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -71,6 +71,30 @@ public sealed class WorktreeMaintenanceService
|
||||
return new ResetResult(removed, rows.Count, Blocked: false, RunningTasks: 0);
|
||||
}
|
||||
|
||||
public async Task<IReadOnlyList<WorktreeOverviewRow>> GetOverviewAsync(
|
||||
string? listId, CancellationToken ct = default)
|
||||
{
|
||||
using var context = _dbFactory.CreateDbContext();
|
||||
var query = from w in context.Worktrees
|
||||
join t in context.Tasks on w.TaskId equals t.Id
|
||||
join l in context.Lists on t.ListId equals l.Id
|
||||
select new
|
||||
{
|
||||
w.TaskId, t.Title, t.Status, ListId = l.Id, ListName = l.Name,
|
||||
w.Path, w.BranchName, w.State, w.DiffStat, w.CreatedAt,
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty(listId))
|
||||
query = query.Where(x => x.ListId == listId);
|
||||
|
||||
var rows = await query.AsNoTracking().ToListAsync(ct);
|
||||
|
||||
return rows.Select(x => new WorktreeOverviewRow(
|
||||
x.TaskId, x.Title, x.Status, x.ListId, x.ListName,
|
||||
x.Path, x.BranchName, x.State, x.DiffStat, x.CreatedAt,
|
||||
PathExistsOnDisk: !string.IsNullOrWhiteSpace(x.Path) && Directory.Exists(x.Path))).ToList();
|
||||
}
|
||||
|
||||
private async Task<bool> TryRemoveAsync(WorktreeRow row, bool force, CancellationToken ct)
|
||||
{
|
||||
var repoDirExists = !string.IsNullOrWhiteSpace(row.WorkingDir) && Directory.Exists(row.WorkingDir);
|
||||
|
||||
17
src/ClaudeDo.Worker/Worktrees/WorktreeOverviewRow.cs
Normal file
17
src/ClaudeDo.Worker/Worktrees/WorktreeOverviewRow.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using ClaudeDo.Data.Models;
|
||||
using TaskStatus = ClaudeDo.Data.Models.TaskStatus;
|
||||
|
||||
namespace ClaudeDo.Worker.Worktrees;
|
||||
|
||||
public sealed record WorktreeOverviewRow(
|
||||
string TaskId,
|
||||
string TaskTitle,
|
||||
TaskStatus TaskStatus,
|
||||
string ListId,
|
||||
string ListName,
|
||||
string Path,
|
||||
string BranchName,
|
||||
WorktreeState State,
|
||||
string? DiffStat,
|
||||
DateTime CreatedAt,
|
||||
bool PathExistsOnDisk);
|
||||
Reference in New Issue
Block a user