- Implement tests for various scenarios including user edits, initial dirty state, and document changes. - Ensure proper flagging of uncommitted changes and silent saves for documents opened in a dirty state. - Test debounce behavior for document change notifications and version clearing functionality. - Validate suspension and resumption of auto-saving during versioning processes.
2.1 KiB
2.1 KiB
name: sync-db description: Sync Drizzle schema ลง PostgreSQL container judes-note-db + seed ไฟล์ตัวอย่าง — ใช้หลังแก้ db/schema.ts หรือตอน setup ครั้งแรก
ขั้นตอน
- สร้างไฟล์ migration: รัน
npx drizzle-kit generate(อ่าน config จากdrizzle.config.ts— เทียบdb/schema.tsกับไฟล์ที่มีในdrizzle/ไม่ต้องต่อ DB) — ถ้าไม่มีการเปลี่ยนแปลงจะขึ้น "No schema changes" แล้วจบเฉย ๆ - Apply + seed: รัน
npm run db:prepare(= compose up +scripts/migrate.mjsapply ไฟล์ใหม่ +scripts/seed-samples.mjssync ไฟล์จากpublic/note/samples/) — idempotent - รายงานผลแต่ละขั้นตามจริง — ขั้นไหนไม่ได้ทำบอกสาเหตุ อย่าเดา
ห้ามใช้
npx drizzle-kit push— production (docker/web.Dockerfile) apply จากไฟล์drizzle/*.sqlเท่านั้น ถ้า dev push schema ตรง ๆ ไฟล์ migration จะตามไม่ทันแล้วสองฝั่งเพี้ยนกัน
ข้อควรระวัง
DATABASE_URLชี้ที่ containerjudes-note-db(postgres:17-alpine, พอร์ต 54322 — ไม่ใช่ Supabase) — ถ้า container ไม่รันอยู่ ให้สั่งdocker start judes-note-dbหรือแจ้งผู้ใช้ตามคำสั่ง docker run ใน README- ห้ามลบ volume
judes-note-db-dataเว้นแต่ผู้ใช้สั่งชัดเจน (มีข้อมูล annotation จริงหายได้) - ไม่ต้องตั้ง realtime publication/replica identity อีกต่อไป (SSE sync ผ่าน
lib/annotate-events.tsไม่ผ่าน DB trigger)