From 81fd186fb25eaaf8695a827737c209eb9cb01c1b Mon Sep 17 00:00:00 2001 From: mika kuns Date: Tue, 2 Jun 2026 16:33:11 +0200 Subject: [PATCH] feat(worker): map prime schedule weekday bitmask over the hub --- src/ClaudeDo.Worker/Hub/WorkerHub.cs | 11 ++++------- .../Repositories/PrimeScheduleRepositoryTests.cs | 11 ++++------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/ClaudeDo.Worker/Hub/WorkerHub.cs b/src/ClaudeDo.Worker/Hub/WorkerHub.cs index f8b44b0..07fca4d 100644 --- a/src/ClaudeDo.Worker/Hub/WorkerHub.cs +++ b/src/ClaudeDo.Worker/Hub/WorkerHub.cs @@ -490,8 +490,7 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub using var ctx = _dbFactory.CreateDbContext(); var rows = await new PrimeScheduleRepository(ctx).ListAsync(); return rows.Select(e => new PrimeScheduleDto( - e.Id, e.StartDate, e.EndDate, e.TimeOfDay, - e.WorkdaysOnly, e.Enabled, e.LastRunAt, e.PromptOverride)).ToList(); + e.Id, (int)e.Days, e.TimeOfDay, e.Enabled, e.LastRunAt, e.PromptOverride)).ToList(); } public async Task UpsertPrimeSchedule(PrimeScheduleDto dto) @@ -502,10 +501,8 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub var entity = new ClaudeDo.Data.Models.PrimeScheduleEntity { Id = dto.Id == Guid.Empty ? Guid.NewGuid() : dto.Id, - StartDate = dto.StartDate, - EndDate = dto.EndDate, + Days = (ClaudeDo.Data.Models.PrimeDays)dto.Days, TimeOfDay = dto.TimeOfDay, - WorkdaysOnly = dto.WorkdaysOnly, Enabled = dto.Enabled, PromptOverride = dto.PromptOverride, CreatedAt = existing?.CreatedAt ?? DateTimeOffset.UtcNow, @@ -513,8 +510,8 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub }; await repo.UpsertAsync(entity); _primeSignal.Signal(); - return new PrimeScheduleDto(entity.Id, entity.StartDate, entity.EndDate, entity.TimeOfDay, - entity.WorkdaysOnly, entity.Enabled, entity.LastRunAt, entity.PromptOverride); + return new PrimeScheduleDto(entity.Id, (int)entity.Days, entity.TimeOfDay, + entity.Enabled, entity.LastRunAt, entity.PromptOverride); } public async Task DeletePrimeSchedule(Guid id) diff --git a/tests/ClaudeDo.Worker.Tests/Repositories/PrimeScheduleRepositoryTests.cs b/tests/ClaudeDo.Worker.Tests/Repositories/PrimeScheduleRepositoryTests.cs index bcbf33c..5993d64 100644 --- a/tests/ClaudeDo.Worker.Tests/Repositories/PrimeScheduleRepositoryTests.cs +++ b/tests/ClaudeDo.Worker.Tests/Repositories/PrimeScheduleRepositoryTests.cs @@ -19,10 +19,8 @@ public class PrimeScheduleRepositoryTests : IDisposable await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity { Id = id, - StartDate = new DateOnly(2026, 5, 1), - EndDate = new DateOnly(2026, 6, 30), + Days = PrimeDays.Weekdays, TimeOfDay = new TimeSpan(7, 0, 0), - WorkdaysOnly = true, Enabled = true, CreatedAt = DateTimeOffset.UtcNow, }); @@ -33,6 +31,7 @@ public class PrimeScheduleRepositoryTests : IDisposable Assert.Single(rows); Assert.Equal(id, rows[0].Id); Assert.Equal(new TimeSpan(7, 0, 0), rows[0].TimeOfDay); + Assert.Equal(PrimeDays.Weekdays, rows[0].Days); } [Fact] @@ -45,8 +44,7 @@ public class PrimeScheduleRepositoryTests : IDisposable await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity { Id = id, - StartDate = new DateOnly(2026, 5, 1), - EndDate = new DateOnly(2026, 5, 31), + Days = PrimeDays.Weekdays, TimeOfDay = new TimeSpan(7, 0, 0), Enabled = true, CreatedAt = DateTimeOffset.UtcNow, @@ -69,8 +67,7 @@ public class PrimeScheduleRepositoryTests : IDisposable await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity { Id = id, - StartDate = new DateOnly(2026, 5, 1), - EndDate = new DateOnly(2026, 5, 1), + Days = PrimeDays.All, TimeOfDay = TimeSpan.Zero, Enabled = true, CreatedAt = DateTimeOffset.UtcNow,