diff --git a/apps/api/src/maps/road-refinement.controller.ts b/apps/api/src/maps/road-refinement.controller.ts index 538d8e8..0161315 100644 --- a/apps/api/src/maps/road-refinement.controller.ts +++ b/apps/api/src/maps/road-refinement.controller.ts @@ -227,19 +227,15 @@ export class RoadRefinementController { CREATE UNIQUE INDEX IF NOT EXISTS approved_roads_cand_uidx ON approved_roads(candidate_id) WHERE candidate_id IS NOT NULL; `); - // 2. Direct insert/upsert into approved_roads immediately + // 2. Direct insert into approved_roads immediately (Delete existing first to ensure idempotency) await this.dataSource.query(` + DELETE FROM approved_roads WHERE candidate_id = $1::uuid; INSERT INTO approved_roads ( candidate_id, geometry, name, highway, confidence, "uniqueDriverCount", oneway, approved_at ) SELECT id, geometry::geometry, COALESCE(name, 'Unnamed Road'), COALESCE(highway, 'residential'), confidence, "uniqueDriverCount", COALESCE(oneway, 0), NOW() - FROM candidate_roads WHERE id = $1 - ON CONFLICT (candidate_id) DO UPDATE SET - geometry = EXCLUDED.geometry, - name = EXCLUDED.name, - highway = EXCLUDED.highway, - confidence = EXCLUDED.confidence; + FROM candidate_roads WHERE id = $1::uuid; `, [id]); // 3. Mark candidate as approved