d5e8946d7d1710e5b89d981a9b4bbebfd7ff1f6a
FIX-1 DEDUP (P0): Two same-name siblings in one litter produced identical
ExternalRefs ('docx-{ws}-{name}-{dob}'), crashing execute on IX_Gerbils_ExternalRef.
Fix: ordinal counter per base-ref within the batch → first occurrence keeps the
base ref, subsequent ones get -2, -3 … suffix. Deterministic (JSON-order) → idempotent
re-runs find existing rows via ExternalRef path (PATH 1). HashSet guard added as a
belt-and-suspenders check.
FIX-2 TRANSACTION: execute now opens a single BeginTransactionAsync before the loop
and commits after the final SaveChangesAsync. Eager contact saves (within the tx) and
the gerbil batch save are fully atomic — crash → full rollback, no partial state.
FIX-3 LITTER LOOKUP: docx WsCode is a litter-size fraction ('4/4', '/5') — NOT a
PairingCode like 'G01/ZdkC'. The previous WsCode→PairingCode lookup was always a
no-op (hence litterLinked=0 in every dry-run). Fix: look up DB litters by LitterDob
(±5 days); link only when exactly ONE candidate exists (unambiguous, no false links).
P0 REGRESSION TEST (Test 6): SQLite + EnsureCreated → unique index enforced.
Two animals same name+litter → execute succeeds, both created, distinct ExternalRefs,
re-run = 0 new. This test would have caught the live crash.
Gate: 164/164 tests, has-pending=No, no schema change.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
GerbilManager
GerbilManagerWebAPI/— ASP.NET Core backend (Swagger unter/swagger)gerbil-manager-web/— React-Frontend (Vite + TypeScript), siehegerbil-manager-web/README.md
Requirements
Install ef:
dotnet tool install --global dotnet-ef
Used cmd´s
Start containers
docker compose up
Create the initial database
dotnet ef database update
Create an migration script
dotnet ef migrations add
Docker
force compose rebuild
docker-compose build --no-cache
Frontend (gerbil-manager-web)
cd gerbil-manager-web npm install npm run dev
TODO:
- Backup docker volume database
- run "dotnet ef database update" if no database exist.
Description
Languages
C#
43%
TypeScript
34.5%
Python
18%
CSS
3.7%
Shell
0.5%
Other
0.1%