feat(worker): map prime schedule weekday bitmask over the hub
This commit is contained in:
@@ -490,8 +490,7 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub
|
|||||||
using var ctx = _dbFactory.CreateDbContext();
|
using var ctx = _dbFactory.CreateDbContext();
|
||||||
var rows = await new PrimeScheduleRepository(ctx).ListAsync();
|
var rows = await new PrimeScheduleRepository(ctx).ListAsync();
|
||||||
return rows.Select(e => new PrimeScheduleDto(
|
return rows.Select(e => new PrimeScheduleDto(
|
||||||
e.Id, e.StartDate, e.EndDate, e.TimeOfDay,
|
e.Id, (int)e.Days, e.TimeOfDay, e.Enabled, e.LastRunAt, e.PromptOverride)).ToList();
|
||||||
e.WorkdaysOnly, e.Enabled, e.LastRunAt, e.PromptOverride)).ToList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PrimeScheduleDto> UpsertPrimeSchedule(PrimeScheduleDto dto)
|
public async Task<PrimeScheduleDto> UpsertPrimeSchedule(PrimeScheduleDto dto)
|
||||||
@@ -502,10 +501,8 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub
|
|||||||
var entity = new ClaudeDo.Data.Models.PrimeScheduleEntity
|
var entity = new ClaudeDo.Data.Models.PrimeScheduleEntity
|
||||||
{
|
{
|
||||||
Id = dto.Id == Guid.Empty ? Guid.NewGuid() : dto.Id,
|
Id = dto.Id == Guid.Empty ? Guid.NewGuid() : dto.Id,
|
||||||
StartDate = dto.StartDate,
|
Days = (ClaudeDo.Data.Models.PrimeDays)dto.Days,
|
||||||
EndDate = dto.EndDate,
|
|
||||||
TimeOfDay = dto.TimeOfDay,
|
TimeOfDay = dto.TimeOfDay,
|
||||||
WorkdaysOnly = dto.WorkdaysOnly,
|
|
||||||
Enabled = dto.Enabled,
|
Enabled = dto.Enabled,
|
||||||
PromptOverride = dto.PromptOverride,
|
PromptOverride = dto.PromptOverride,
|
||||||
CreatedAt = existing?.CreatedAt ?? DateTimeOffset.UtcNow,
|
CreatedAt = existing?.CreatedAt ?? DateTimeOffset.UtcNow,
|
||||||
@@ -513,8 +510,8 @@ public sealed class WorkerHub : Microsoft.AspNetCore.SignalR.Hub
|
|||||||
};
|
};
|
||||||
await repo.UpsertAsync(entity);
|
await repo.UpsertAsync(entity);
|
||||||
_primeSignal.Signal();
|
_primeSignal.Signal();
|
||||||
return new PrimeScheduleDto(entity.Id, entity.StartDate, entity.EndDate, entity.TimeOfDay,
|
return new PrimeScheduleDto(entity.Id, (int)entity.Days, entity.TimeOfDay,
|
||||||
entity.WorkdaysOnly, entity.Enabled, entity.LastRunAt, entity.PromptOverride);
|
entity.Enabled, entity.LastRunAt, entity.PromptOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeletePrimeSchedule(Guid id)
|
public async Task DeletePrimeSchedule(Guid id)
|
||||||
|
|||||||
@@ -19,10 +19,8 @@ public class PrimeScheduleRepositoryTests : IDisposable
|
|||||||
await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity
|
await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
StartDate = new DateOnly(2026, 5, 1),
|
Days = PrimeDays.Weekdays,
|
||||||
EndDate = new DateOnly(2026, 6, 30),
|
|
||||||
TimeOfDay = new TimeSpan(7, 0, 0),
|
TimeOfDay = new TimeSpan(7, 0, 0),
|
||||||
WorkdaysOnly = true,
|
|
||||||
Enabled = true,
|
Enabled = true,
|
||||||
CreatedAt = DateTimeOffset.UtcNow,
|
CreatedAt = DateTimeOffset.UtcNow,
|
||||||
});
|
});
|
||||||
@@ -33,6 +31,7 @@ public class PrimeScheduleRepositoryTests : IDisposable
|
|||||||
Assert.Single(rows);
|
Assert.Single(rows);
|
||||||
Assert.Equal(id, rows[0].Id);
|
Assert.Equal(id, rows[0].Id);
|
||||||
Assert.Equal(new TimeSpan(7, 0, 0), rows[0].TimeOfDay);
|
Assert.Equal(new TimeSpan(7, 0, 0), rows[0].TimeOfDay);
|
||||||
|
Assert.Equal(PrimeDays.Weekdays, rows[0].Days);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
@@ -45,8 +44,7 @@ public class PrimeScheduleRepositoryTests : IDisposable
|
|||||||
await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity
|
await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
StartDate = new DateOnly(2026, 5, 1),
|
Days = PrimeDays.Weekdays,
|
||||||
EndDate = new DateOnly(2026, 5, 31),
|
|
||||||
TimeOfDay = new TimeSpan(7, 0, 0),
|
TimeOfDay = new TimeSpan(7, 0, 0),
|
||||||
Enabled = true,
|
Enabled = true,
|
||||||
CreatedAt = DateTimeOffset.UtcNow,
|
CreatedAt = DateTimeOffset.UtcNow,
|
||||||
@@ -69,8 +67,7 @@ public class PrimeScheduleRepositoryTests : IDisposable
|
|||||||
await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity
|
await new PrimeScheduleRepository(ctx).UpsertAsync(new PrimeScheduleEntity
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
StartDate = new DateOnly(2026, 5, 1),
|
Days = PrimeDays.All,
|
||||||
EndDate = new DateOnly(2026, 5, 1),
|
|
||||||
TimeOfDay = TimeSpan.Zero,
|
TimeOfDay = TimeSpan.Zero,
|
||||||
Enabled = true,
|
Enabled = true,
|
||||||
CreatedAt = DateTimeOffset.UtcNow,
|
CreatedAt = DateTimeOffset.UtcNow,
|
||||||
|
|||||||
Reference in New Issue
Block a user