diff --git a/internal/api/api.go b/internal/api/api.go index df85c97..f14e559 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -1,6 +1,7 @@ package api import ( + "database/sql" "errors" "os" @@ -8,7 +9,7 @@ import ( "github.com/gofiber/fiber/v2/middleware/keyauth" ) -func Setup(app *fiber.App) error { +func Setup(app *fiber.App, db *sql.DB) error { apiKey := os.Getenv("API_KEY") if apiKey == "" { diff --git a/internal/database/database.go b/internal/database/database.go index dacd5c1..8a2f0bf 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -1,24 +1,22 @@ package database import ( + "database/sql" "embed" "fmt" - "github.com/jmoiron/sqlx" _ "github.com/mattn/go-sqlite3" migrate "github.com/rubenv/sql-migrate" ) -var DB *sqlx.DB - //go:embed migrations/* var dbMigrations embed.FS -func Connect(filename string) error { - DB, err := sqlx.Open("sqlite3", filename) +func Connect(filename string) (*sql.DB, error) { + db, err := sql.Open("sqlite3", filename) if err != nil { - return err + return nil, err } migrations := migrate.EmbedFileSystemMigrationSource{ @@ -26,13 +24,13 @@ func Connect(filename string) error { Root: "migrations", } - n, err := migrate.Exec(DB.DB, "sqlite3", migrations, migrate.Up) + n, err := migrate.Exec(db, "sqlite3", migrations, migrate.Up) if err != nil { - return err + return nil, err } fmt.Printf("Applied %d migrations - Database is ready!\n", n) - return nil + return db, nil } diff --git a/internal/database/migrations/1_initial.sql b/internal/database/migrations/1_initial.sql index b544f21..e50fa0c 100644 --- a/internal/database/migrations/1_initial.sql +++ b/internal/database/migrations/1_initial.sql @@ -1,7 +1,8 @@ -- +migrate Up CREATE table users ( id INTEGER PRIMARY KEY, - name text NOT NULL + first_name text NOT NULL, + email text NOT NULL ); -- +migrate Down diff --git a/main.go b/main.go index d83536e..506567f 100644 --- a/main.go +++ b/main.go @@ -2,8 +2,8 @@ package main import ( _ "embed" - "freed/api" - "freed/database" + "freed/internal/api" + "freed/internal/database" "log" "os" @@ -19,7 +19,7 @@ func main() { log.Fatalf("No ENV value set for 'DB_FILE', could not initialize database. Please provide a valid path and filename") } - repository, err := database.NewRepository(dbFile) + db, err := database.Connect(dbFile) if err != nil { log.Fatalf("Could not initialize database: %v", err) @@ -31,7 +31,7 @@ func main() { app.Use(logger.New()) // Try to set up API routes - if err := api.Setup(app, repository); err != nil { + if err := api.Setup(app, db); err != nil { log.Printf("Could not setup /api routes: %s", err) }