From 42a039ae6b5468df82ec370cb8d8cad26b4e7089 Mon Sep 17 00:00:00 2001 From: AdrianoDev Date: Sat, 22 Aug 2026 11:01:45 +0200 Subject: [PATCH] schema: il limite del vincolo e' la migrazione che non c'e', non SQLite --- src/lib/longevity/db.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/lib/longevity/db.ts b/src/lib/longevity/db.ts index bf66c34..62737f1 100644 --- a/src/lib/longevity/db.ts +++ b/src/lib/longevity/db.ts @@ -89,9 +89,16 @@ CREATE TABLE IF NOT EXISTS score ( -- 'score' direttamente, dove quel tipo non c'e' piu'. Questo vincolo lo riscrive -- a livello di dato: o lo stato e' 'ok' e il valore c'e', o e' 'insufficiente' e -- il valore e' NULL, mai un numero scritto sotto uno stato che lo nega. - -- SQLite non permette di aggiungere un CHECK con ALTER TABLE a una tabella gia' - -- creata: un database longevity.db esistente, creato prima di questa modifica, - -- NON avra' questo vincolo finche' non viene ricreato. + -- ATTENZIONE al limite, che non e' quello che sembra: lo schema qui sopra gira con + -- CREATE TABLE IF NOT EXISTS, che su un file gia' esistente e' un'operazione a vuoto. + -- Quindi un longevity.db creato prima di questa modifica NON ha questo vincolo, e + -- continuera' a non averlo finche' qualcuno non lo migra a mano. + -- (Non e' un limite di SQLite: la versione imbarcata da better-sqlite3 e' la 3.53, + -- che ALTER TABLE ... ADD CONSTRAINT lo supporta. E' che qui una migrazione non c'e'. + -- Verificato il 22/08: la CLI di sistema e' la 3.37 e non lo supporta, quindi provarlo + -- da riga di comando da' un errore fuorviante.) + -- Oggi nessun longevity.db esiste ancora, quindi il caso e' teorico: lo diventa il + -- giorno del primo deploy, ed e' quello il momento di ricordarselo. CHECK ((stato = 'ok' AND valore IS NOT NULL) OR (stato = 'insufficiente' AND valore IS NULL)) ); CREATE INDEX IF NOT EXISTS idx_score_cliente ON score (client_code, calcolato_at DESC);