Move schema_migrations table creation into 000.sql with INTEGER version column #90

Closed
opened 2026-03-25 02:22:02 +01:00 by clawbot · 1 comment
Collaborator

Per sneak/pixa PR #36, the standard migrations pattern should be:

  1. schema_migrations table DDL lives in 000.sql (not inline Go code)
  2. version column is INTEGER PRIMARY KEY (not TEXT)
  3. 000.sql is self-contained — contains both CREATE TABLE IF NOT EXISTS and INSERT OR IGNORE INTO schema_migrations (version) VALUES (0)
  4. Go code does zero INSERTs for the bootstrap — just reads and executes 000.sql

This repo currently creates the migrations table inline in Go code. It should be moved to follow the pixa pattern.

Reference implementation: sneak/pixa 000.sql and database.go.

Per [sneak/pixa PR #36](https://git.eeqj.de/sneak/pixa/pulls/36), the standard migrations pattern should be: 1. **`schema_migrations` table DDL lives in `000.sql`** (not inline Go code) 2. **`version` column is `INTEGER PRIMARY KEY`** (not TEXT) 3. **`000.sql` is self-contained** — contains both `CREATE TABLE IF NOT EXISTS` and `INSERT OR IGNORE INTO schema_migrations (version) VALUES (0)` 4. **Go code does zero INSERTs** for the bootstrap — just reads and executes `000.sql` This repo currently creates the migrations table inline in Go code. It should be moved to follow the pixa pattern. Reference implementation: [sneak/pixa `000.sql`](https://git.eeqj.de/sneak/pixa/src/branch/main/internal/database/schema/000.sql) and [`database.go`](https://git.eeqj.de/sneak/pixa/src/branch/main/internal/database/database.go).
clawbot was assigned by sneak 2026-03-25 02:32:08 +01:00
Author
Collaborator

This issue does not apply to dnswatcher. The repo uses JSON file-based state persistence (internal/state/state.goDATA_DIR/state.json), not SQLite. There are:

  • No .sql files anywhere in the repo
  • No database package
  • No SQLite dependency in go.mod
  • No migrations infrastructure of any kind
  • No schema_migrations table creation (inline or otherwise)

The issue description states "This repo currently creates the migrations table inline in Go code" — this is factually incorrect. dnswatcher has never used SQLite.

The referenced pattern from sneak/pixa PR #36 applies to repos with existing SQLite migration infrastructure. dnswatcher has none.

Recommendation: close this issue as not applicable, or re-scope it if there's a planned migration from JSON state to SQLite (which would be a much larger piece of work than what's described here).

This issue does not apply to dnswatcher. The repo uses **JSON file-based state persistence** (`internal/state/state.go` → `DATA_DIR/state.json`), not SQLite. There are: - No `.sql` files anywhere in the repo - No `database` package - No SQLite dependency in `go.mod` - No migrations infrastructure of any kind - No `schema_migrations` table creation (inline or otherwise) The issue description states "This repo currently creates the migrations table inline in Go code" — this is factually incorrect. dnswatcher has never used SQLite. The referenced pattern from [sneak/pixa PR #36](https://git.eeqj.de/sneak/pixa/pulls/36) applies to repos with existing SQLite migration infrastructure. dnswatcher has none. Recommendation: close this issue as not applicable, or re-scope it if there's a planned migration from JSON state to SQLite (which would be a much larger piece of work than what's described here).
clawbot removed their assignment 2026-03-25 02:34:26 +01:00
sneak was assigned by clawbot 2026-03-25 02:34:26 +01:00
sneak closed this issue 2026-03-26 14:32:15 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dnswatcher#90