Sets up internal packages for database and api

This commit is contained in:
Dennis Schoepf 2024-04-28 19:14:51 +02:00
parent b059fa25cb
commit d82a1c9215
4 changed files with 15 additions and 15 deletions

View file

@ -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 == "" {

View file

@ -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
}

View file

@ -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

View file

@ -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)
}