diff options
| author | Kujtim Hoxha <[email protected]> | 2025-04-24 22:11:39 +0200 |
|---|---|---|
| committer | Kujtim Hoxha <[email protected]> | 2025-04-24 22:27:51 +0200 |
| commit | de41703e207bb31aa25268547e30024041ab7fff (patch) | |
| tree | 591ff6bec950b8f48ec08a234f8d713ae6788bd9 /internal | |
| parent | 2c24bfb7b3839233dea2842dd6607e845a3d1494 (diff) | |
| download | opencode-de41703e207bb31aa25268547e30024041ab7fff.tar.gz opencode-de41703e207bb31aa25268547e30024041ab7fff.zip | |
change db driver
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/db/connect.go | 45 | ||||
| -rw-r--r-- | internal/db/migrations/000001_initial.down.sql | 10 | ||||
| -rw-r--r-- | internal/db/migrations/20250424200609_initial.sql (renamed from internal/db/migrations/000001_initial.up.sql) | 18 |
3 files changed, 29 insertions, 44 deletions
diff --git a/internal/db/connect.go b/internal/db/connect.go index 196ff8c12..b8fcb7362 100644 --- a/internal/db/connect.go +++ b/internal/db/connect.go @@ -6,14 +6,13 @@ import ( "os" "path/filepath" - "github.com/golang-migrate/migrate/v4" - "github.com/golang-migrate/migrate/v4/source/iofs" - - "github.com/golang-migrate/migrate/v4/database/sqlite3" - _ "github.com/mattn/go-sqlite3" + _ "github.com/ncruces/go-sqlite3/driver" + _ "github.com/ncruces/go-sqlite3/embed" "github.com/opencode-ai/opencode/internal/config" "github.com/opencode-ai/opencode/internal/logging" + + "github.com/pressly/goose/v3" ) func Connect() (*sql.DB, error) { @@ -54,38 +53,16 @@ func Connect() (*sql.DB, error) { } } - // Initialize schema from embedded file - d, err := iofs.New(FS, "migrations") - if err != nil { - logging.Error("Failed to open embedded migrations", "error", err) - db.Close() - return nil, fmt.Errorf("failed to open embedded migrations: %w", err) - } + goose.SetBaseFS(FS) - driver, err := sqlite3.WithInstance(db, &sqlite3.Config{}) - if err != nil { - logging.Error("Failed to create SQLite driver", "error", err) - db.Close() - return nil, fmt.Errorf("failed to create SQLite driver: %w", err) + if err := goose.SetDialect("sqlite3"); err != nil { + logging.Error("Failed to set dialect", "error", err) + return nil, fmt.Errorf("failed to set dialect: %w", err) } - m, err := migrate.NewWithInstance("iofs", d, "ql", driver) - if err != nil { - logging.Error("Failed to create migration instance", "error", err) - db.Close() - return nil, fmt.Errorf("failed to create migration instance: %w", err) - } - - err = m.Up() - if err != nil && err != migrate.ErrNoChange { - logging.Error("Migration failed", "error", err) - db.Close() - return nil, fmt.Errorf("failed to apply schema: %w", err) - } else if err == migrate.ErrNoChange { - logging.Info("No schema changes to apply") - } else { - logging.Info("Schema migration applied successfully") + if err := goose.Up(db, "migrations"); err != nil { + logging.Error("Failed to apply migrations", "error", err) + return nil, fmt.Errorf("failed to apply migrations: %w", err) } - return db, nil } diff --git a/internal/db/migrations/000001_initial.down.sql b/internal/db/migrations/000001_initial.down.sql deleted file mode 100644 index a2b0d1321..000000000 --- a/internal/db/migrations/000001_initial.down.sql +++ /dev/null @@ -1,10 +0,0 @@ -DROP TRIGGER IF EXISTS update_sessions_updated_at; -DROP TRIGGER IF EXISTS update_messages_updated_at; -DROP TRIGGER IF EXISTS update_files_updated_at; - -DROP TRIGGER IF EXISTS update_session_message_count_on_delete; -DROP TRIGGER IF EXISTS update_session_message_count_on_insert; - -DROP TABLE IF EXISTS sessions; -DROP TABLE IF EXISTS messages; -DROP TABLE IF EXISTS files; diff --git a/internal/db/migrations/000001_initial.up.sql b/internal/db/migrations/20250424200609_initial.sql index b846ec600..02caecf0c 100644 --- a/internal/db/migrations/000001_initial.up.sql +++ b/internal/db/migrations/20250424200609_initial.sql @@ -1,3 +1,5 @@ +-- +goose Up +-- +goose StatementBegin -- Sessions CREATE TABLE IF NOT EXISTS sessions ( id TEXT PRIMARY KEY, @@ -78,3 +80,19 @@ UPDATE sessions SET message_count = message_count - 1 WHERE id = old.session_id; END; + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +DROP TRIGGER IF EXISTS update_sessions_updated_at; +DROP TRIGGER IF EXISTS update_messages_updated_at; +DROP TRIGGER IF EXISTS update_files_updated_at; + +DROP TRIGGER IF EXISTS update_session_message_count_on_delete; +DROP TRIGGER IF EXISTS update_session_message_count_on_insert; + +DROP TABLE IF EXISTS sessions; +DROP TABLE IF EXISTS messages; +DROP TABLE IF EXISTS files; +-- +goose StatementEnd |
