b913a2bf90
Refs gitea:Adriano/AI-OS#310 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
3.2 KiB
3.2 KiB
Task 1 — Report: migrazioni DB (ruoli, guid, author_id)
Nota: questo file conteneva un report di un run precedente (task diverso, "content_blocks
- role") — sovrascritto con il report corretto del Task 1 corrente ("migrazioni ruoli, guid contenuti, posts.author_id").
Cosa è stato fatto
Seguito TDD come da brief task-1-brief.md, codice usato verbatim.
- Test scritti in
tests/content-db.test.ts: aggiunto importcreateUserda../src/lib/authe il bloccodescribe('migrazioni ruoli/guid/autore', ...)con le 3 it: guid non vuoto/univoco, invariante SQL editor→superuser, colonnaposts.author_id. - Verificato fallimento atteso:
npm test -- tests/content-db.test.ts→ 2 test falliti (no such column: guid,author_idassente), 6 preesistenti passati. Comportamento pre-migrazione confermato. - Migrazioni implementate in
src/lib/db.ts:- import
randomUUIDdanode:crypto. - dopo il blocco che aggiunge
users.role, inserita: unificazionerole='editor' → 'superuser'(UPDATE idempotente), aggiunta colonna additivacontent_blocks.guid TEXT(con checkPRAGMA table_info), aggiunta colonna additivaposts.author_id INTEGER(stesso check). - blocco seed finale sostituito: insert ora include
guidgenerato conrandomUUID(); aggiunto backfill per righe pre-esistenti con guid nullo/vuoto; creato indice univocoidx_content_guidDOPO il backfill (per non fallire su righe nulle transitorie).
- import
syncSeedinsrc/lib/content.tsaggiornata allo stesso schema: importrandomUUID, insert con guid generato per ogni riga.- Verificato successo:
npm test -- tests/content-db.test.tse poinpm testcompleto (tutta la suite) → tutti verdi. - Build:
npm run build→ completata senza errori. - Commit:
5cea895 feat(db): migrazioni ruoli editor->superuser, guid contenuti, posts.author_id(3 file:src/lib/db.ts,src/lib/content.ts,tests/content-db.test.ts).
File toccati
src/lib/db.ts— migrazioni additive/idempotenti + seed con guid + backfill + indice univoco.src/lib/content.ts—syncSeedallineata (guid su ogni insert).tests/content-db.test.ts— nuovo describe block per le 3 verifiche del task.
Output test (finale, suite completa)
Test Files 11 passed (11)
Tests 51 passed (51)
Start at 21:40:18
Duration 2.62s
Output build
[build] Server built in 434ms
[build] Complete!
Dubbi / note
- Nessun dubbio bloccante. Rispettato il vincolo "migrazioni SOLO additive e idempotenti, PRIMA del seed, con verifica PRAGMA table_info prima di ogni ALTER" — verificato a mano leggendo
db.tsdopo l'edit. - Il test importa
createUserda../src/lib/authma non lo invoca in nessunait(fedele al brief verbatim); nessun errore di lint/build osservato per l'import inutilizzato. Se in futuro un linter con regolano-unused-varsstretta viene attivato su questo file, andrà rivisto (fuori scope Task 1). - La migrazione
editor→superuserend-to-end su DB persistente non è testata qui (per design,:memory:non persiste tra duecreateDb) — demandata allo smoke di produzione previsto in un task successivo del piano (Task 14/15), come indicato nel brief stesso.