Files
Adriano b913a2bf90 registri dei piani in git (AI-OS#309)
Refs gitea:Adriano/AI-OS#310

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 10:36:26 +02:00

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.

  1. Test scritti in tests/content-db.test.ts: aggiunto import createUser da ../src/lib/auth e il blocco describe('migrazioni ruoli/guid/autore', ...) con le 3 it: guid non vuoto/univoco, invariante SQL editor→superuser, colonna posts.author_id.
  2. Verificato fallimento atteso: npm test -- tests/content-db.test.ts → 2 test falliti (no such column: guid, author_id assente), 6 preesistenti passati. Comportamento pre-migrazione confermato.
  3. Migrazioni implementate in src/lib/db.ts:
    • import randomUUID da node:crypto.
    • dopo il blocco che aggiunge users.role, inserita: unificazione role='editor' → 'superuser' (UPDATE idempotente), aggiunta colonna additiva content_blocks.guid TEXT (con check PRAGMA table_info), aggiunta colonna additiva posts.author_id INTEGER (stesso check).
    • blocco seed finale sostituito: insert ora include guid generato con randomUUID(); aggiunto backfill per righe pre-esistenti con guid nullo/vuoto; creato indice univoco idx_content_guid DOPO il backfill (per non fallire su righe nulle transitorie).
  4. syncSeed in src/lib/content.ts aggiornata allo stesso schema: import randomUUID, insert con guid generato per ogni riga.
  5. Verificato successo: npm test -- tests/content-db.test.ts e poi npm test completo (tutta la suite) → tutti verdi.
  6. Build: npm run build → completata senza errori.
  7. 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 — syncSeed allineata (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.ts dopo l'edit.
  • Il test importa createUser da ../src/lib/auth ma non lo invoca in nessuna it (fedele al brief verbatim); nessun errore di lint/build osservato per l'import inutilizzato. Se in futuro un linter con regola no-unused-vars stretta viene attivato su questo file, andrà rivisto (fuori scope Task 1).
  • La migrazione editor→superuser end-to-end su DB persistente non è testata qui (per design, :memory: non persiste tra due createDb) — demandata allo smoke di produzione previsto in un task successivo del piano (Task 14/15), come indicato nel brief stesso.