feat: move schema_migrations table creation into 000_bootstrap.sql
Some checks failed
check / check (push) Failing after 2m13s
Some checks failed
check / check (push) Failing after 2m13s
Move the inline CREATE TABLE IF NOT EXISTS schema_migrations from Go code into a dedicated 000_bootstrap.sql file, following the sneak/pixa pattern. The bootstrap SQL is executed directly before the migration loop, which now starts from 001+. The bootstrap file also handles its own INSERT OR IGNORE so the Go code does zero inserts for version 0. closes #91 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -135,13 +135,21 @@ type migration struct {
|
|||||||
func (database *Database) runMigrations(
|
func (database *Database) runMigrations(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
) error {
|
) error {
|
||||||
_, err := database.conn.ExecContext(ctx,
|
bootstrap, err := SchemaFiles.ReadFile(
|
||||||
`CREATE TABLE IF NOT EXISTS schema_migrations (
|
"schema/000_bootstrap.sql",
|
||||||
version INTEGER PRIMARY KEY,
|
)
|
||||||
applied_at DATETIME DEFAULT CURRENT_TIMESTAMP)`)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
"create schema_migrations: %w", err,
|
"read bootstrap migration: %w", err,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = database.conn.ExecContext(
|
||||||
|
ctx, string(bootstrap),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf(
|
||||||
|
"execute bootstrap migration: %w", err,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,6 +278,11 @@ func (database *Database) loadMigrations() (
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip bootstrap migration; it is executed separately.
|
||||||
|
if version == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
content, readErr := SchemaFiles.ReadFile(
|
content, readErr := SchemaFiles.ReadFile(
|
||||||
"schema/" + entry.Name(),
|
"schema/" + entry.Name(),
|
||||||
)
|
)
|
||||||
|
|||||||
6
internal/db/schema/000_bootstrap.sql
Normal file
6
internal/db/schema/000_bootstrap.sql
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
-- Bootstrap: create the schema_migrations table itself.
|
||||||
|
CREATE TABLE IF NOT EXISTS schema_migrations (
|
||||||
|
version INTEGER PRIMARY KEY,
|
||||||
|
applied_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
INSERT OR IGNORE INTO schema_migrations (version) VALUES (0);
|
||||||
Reference in New Issue
Block a user