Skip to content

Commit eee669d

Browse files
committed
merge: dev6 → master — positions.updated_at (sblocca pull-desired-state)
2 parents 49b47b2 + 8ce87c5 commit eee669d

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
-- ╔══════════════════════════════════════════════════════════════════════════╗
2+
-- ║ Migration 052 — positions.updated_at (cursore delta pull-desired-state) ║
3+
-- ╠══════════════════════════════════════════════════════════════════════════╣
4+
-- ║ ║
5+
-- ║ FIX drift codice↔schema. La route GET /api/cloud-sync/pull-desired-state ║
6+
-- ║ usa `positions.updated_at` come cursore delta (.gt/.order/cursor), ma la ║
7+
-- ║ colonna non è MAI esistita: `001_schema.sql` definisce solo `created_at`. ║
8+
-- ║ Risultato: la route andava in HTTP 500 a ogni ciclo del daemon ║
9+
-- ║ "query failed: column positions.updated_at does not exist" ║
10+
-- ║ → le intenzioni scritte dall'utente via web (write_requested, ║
11+
-- ║ recheck_requested, geocode_requested, user_excluded, salary_precise) ║
12+
-- ║ non raggiungevano mai la VPS = "non si sincronizza da pulsante web". ║
13+
-- ║ ║
14+
-- ║ Aggiunge la colonna + trigger BEFORE UPDATE che riusa la funzione ║
15+
-- ║ update_updated_at() già definita in 001_schema.sql: ogni UPDATE (sia le ║
16+
-- ║ route desired-state, sia gli upsert di push) fa avanzare il cursore. ║
17+
-- ║ Le righe esistenti ottengono updated_at = now() al momento dell'ALTER ║
18+
-- ║ (DEFAULT su backfill): la prima pull post-deploy le rivede una volta ║
19+
-- ║ (volume limitato dalla finestra), poi si stabilizza sul delta. ║
20+
-- ║ ║
21+
-- ║ Idempotente. ║
22+
-- ║ ║
23+
-- ╚══════════════════════════════════════════════════════════════════════════╝
24+
25+
ALTER TABLE public.positions
26+
ADD COLUMN IF NOT EXISTS updated_at TIMESTAMPTZ NOT NULL DEFAULT now();
27+
28+
DROP TRIGGER IF EXISTS trg_positions_updated_at ON public.positions;
29+
CREATE TRIGGER trg_positions_updated_at
30+
BEFORE UPDATE ON public.positions
31+
FOR EACH ROW EXECUTE FUNCTION update_updated_at();

0 commit comments

Comments
 (0)