Versiehistorie in een tabel, voor site en app
De versiehistorie stond als tekst in zowel de app als de website. Nu staat hij in tabel version_history, met een beheerpagina (Beheer > Versiehistorie) op de site. De site leest de tabel rechtstreeks, de app via de nieuwe actie app.versiehistorie. Startrijen: db/handmatig/22b_versiehistorie_startrijen.sql (als root). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014MGLqt1uKfNARQHut9ifcx
This commit is contained in:
@@ -27,6 +27,7 @@ public class Store
|
||||
public List<CampagneUur> CampagneUren = new();
|
||||
public List<VaultCategoryDefinition> Soorten = VaultCategorySaatgoed.Maak();
|
||||
public List<VaultCategoryField> SoortVelden = new();
|
||||
public List<VersieRegel> VersieRegels = new();
|
||||
|
||||
private long _seq;
|
||||
public long NextId() => ++_seq;
|
||||
@@ -533,6 +534,27 @@ public class TestPush : IPushSender
|
||||
|
||||
|
||||
/// <summary>De startrijen uit db/21_kluissoorten.sql, zodat de tests met dezelfde soorten beginnen als de echte database.</summary>
|
||||
public class VersiehistorieRepo : IVersiehistorieRepository
|
||||
{
|
||||
private readonly Store _s; public VersiehistorieRepo(Store s) => _s = s;
|
||||
private int _volgende = 1;
|
||||
|
||||
public Task<IReadOnlyList<VersieRegel>> ListAsync(bool alleenZichtbaar, CancellationToken ct = default) =>
|
||||
Task.FromResult<IReadOnlyList<VersieRegel>>(
|
||||
_s.VersieRegels.Where(r => !alleenZichtbaar || r.Zichtbaar)
|
||||
.OrderByDescending(r => r.Datum).ThenBy(r => r.Id).ToList());
|
||||
|
||||
public Task<VersieRegel?> FindAsync(int id, CancellationToken ct = default) =>
|
||||
Task.FromResult(_s.VersieRegels.FirstOrDefault(r => r.Id == id));
|
||||
|
||||
// Hoofdletterongevoelig, zoals de database (utf8mb4_unicode_ci) ook doet.
|
||||
public Task<bool> BestaatAsync(DateOnly datum, string kop, int? behalveId, CancellationToken ct = default) =>
|
||||
Task.FromResult(_s.VersieRegels.Any(r => r.Datum == datum && string.Equals(r.Kop, kop, StringComparison.OrdinalIgnoreCase) && (behalveId == null || r.Id != behalveId)));
|
||||
|
||||
public void Add(VersieRegel regel) { if (regel.Id == 0) regel.Id = _volgende++; _s.VersieRegels.Add(regel); }
|
||||
public void Remove(VersieRegel regel) => _s.VersieRegels.Remove(regel);
|
||||
}
|
||||
|
||||
public static class VaultCategorySaatgoed
|
||||
{
|
||||
public static List<VaultCategoryDefinition> Maak()
|
||||
|
||||
Reference in New Issue
Block a user