summaryrefslogtreecommitdiffhomepage
path: root/internal
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-24 22:11:39 +0200
committerKujtim Hoxha <[email protected]>2025-04-24 22:27:51 +0200
commitde41703e207bb31aa25268547e30024041ab7fff (patch)
tree591ff6bec950b8f48ec08a234f8d713ae6788bd9 /internal
parent2c24bfb7b3839233dea2842dd6607e845a3d1494 (diff)
downloadopencode-de41703e207bb31aa25268547e30024041ab7fff.tar.gz
opencode-de41703e207bb31aa25268547e30024041ab7fff.zip
change db driver
Diffstat (limited to 'internal')
-rw-r--r--internal/db/connect.go45
-rw-r--r--internal/db/migrations/000001_initial.down.sql10
-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