[CRITICAL] mergeMeasurements is dode code — syncAll gebruikt eigen inline merge #3
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eddy/weegschaal-app#3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
src/sync/syncService.tsbevat twee onafhankelijke merge-implementaties:mergeMeasurements()(regel 22-57): geëxporteerd, getest met 10+ unit tests intests/syncService.test.tssyncAll()(regel 110-157): de daadwerkelijke productiecode die bij elke sync draaitDe twee implementaties verschillen in gedrag:
mergeMeasurementszetdeletedAtop het resultaat bij remote deleted recordssyncAll's inline merge roept directremoveMeasurement()aanGevolg: De unit tests valideren code die nooit in productie draait. Een wijziging in
mergeMeasurementszou alle tests laten slagen maar geen effect hebben op runtime-gedrag.Oplossing
Refactor
syncAll()zodat hetmergeMeasurements()gebruikt als canonieke merge-functie. De flow wordt:getAllMeasurementsForSync())mergeMeasurements(local, remote)aan → dit retourneert de gemergde lijstdeletedAt→removeMeasurement(), overige →upsertMeasurement()Dit elimineert de code-duplicatie en maakt de bestaande tests weer betekenisvol.
NB:
mergeMeasurementsis een pure functie die alleen data transformeert — de DB-operaties gebeuren pas insyncAllna de merge.Opgelost in PR #19: #19
Wat is er gedaan:
syncAll()gerefactored: loopt nu over het resultaat vanmergeMeasurements(local, remote)i.p.v. handmatige inline mergepulledgeteld (voorheendeletedin pull-fase)Verificatie:
mergeMeasurementstests die nu echte productielogica testen)expo run:androidOpgelost in PR #19: de syncAll pull-fase gebruikt nu mergeMeasurements() als canonieke merge. Dit elimineert de dubbele inline merge-logica en lost de LWW-bug bij remote deletions op.