Switch to pure-Go SQLite driver for cross-compilation

- Replace mattn/go-sqlite3 with modernc.org/sqlite (pure-Go, no CGO required)
- Update GoReleaser config to disable CGO for ARM64 builds
- Change driver name from 'sqlite3' to 'sqlite' in all sql.Open calls
- Enables successful cross-compilation for ARM64 without cross-compiler toolchain
- All tests passing with new driver
This commit is contained in:
2025-11-28 01:36:18 +01:00
parent 0e909182c2
commit 4290ee3455
10 changed files with 1047 additions and 22 deletions
@@ -15,7 +15,7 @@ import (
"apocapoc-api/internal/infrastructure/crypto"
"apocapoc-api/internal/infrastructure/persistence/sqlite"
_ "github.com/mattn/go-sqlite3"
_ "modernc.org/sqlite"
)
type TestServer struct {
@@ -24,7 +24,7 @@ type TestServer struct {
}
func setupTestServer(t *testing.T) *TestServer {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open test database: %v", err)
}
@@ -6,7 +6,7 @@ import (
"os"
"path/filepath"
_ "github.com/mattn/go-sqlite3"
_ "modernc.org/sqlite"
)
type Database struct {
@@ -21,7 +21,7 @@ func NewDatabase(dbPath string) (*Database, error) {
}
}
conn, err := sql.Open("sqlite3", dbPath)
conn, err := sql.Open("sqlite", dbPath)
if err != nil {
return nil, fmt.Errorf("failed to open database: %w", err)
}
@@ -4,11 +4,11 @@ import (
"database/sql"
"testing"
_ "github.com/mattn/go-sqlite3"
_ "modernc.org/sqlite"
)
func TestRunMigrations(t *testing.T) {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open database: %v", err)
}
@@ -32,7 +32,7 @@ func TestRunMigrations(t *testing.T) {
}
func TestUsersTableSchema(t *testing.T) {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open database: %v", err)
}
@@ -57,7 +57,7 @@ func TestUsersTableSchema(t *testing.T) {
}
func TestHabitsTableSchema(t *testing.T) {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open database: %v", err)
}
@@ -83,7 +83,7 @@ func TestHabitsTableSchema(t *testing.T) {
}
func TestHabitEntriesTableSchema(t *testing.T) {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open database: %v", err)
}
@@ -108,7 +108,7 @@ func TestHabitEntriesTableSchema(t *testing.T) {
}
func TestMigrationsAreIdempotent(t *testing.T) {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open database: %v", err)
}
@@ -0,0 +1,5 @@
package sqlite
import (
_ "modernc.org/sqlite"
)
@@ -9,11 +9,11 @@ import (
"apocapoc-api/internal/domain/entities"
"apocapoc-api/internal/shared/errors"
_ "github.com/mattn/go-sqlite3"
_ "modernc.org/sqlite"
)
func setupTestDB(t *testing.T) *sql.DB {
db, err := sql.Open("sqlite3", ":memory:")
db, err := sql.Open("sqlite", ":memory:")
if err != nil {
t.Fatalf("Failed to open test database: %v", err)
}