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 package api
import ( import (
"database/sql"
"errors" "errors"
"os" "os"
@ -8,7 +9,7 @@ import (
"github.com/gofiber/fiber/v2/middleware/keyauth" "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") apiKey := os.Getenv("API_KEY")
if apiKey == "" { if apiKey == "" {

View file

@ -1,24 +1,22 @@
package database package database
import ( import (
"database/sql"
"embed" "embed"
"fmt" "fmt"
"github.com/jmoiron/sqlx"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
migrate "github.com/rubenv/sql-migrate" migrate "github.com/rubenv/sql-migrate"
) )
var DB *sqlx.DB
//go:embed migrations/* //go:embed migrations/*
var dbMigrations embed.FS var dbMigrations embed.FS
func Connect(filename string) error { func Connect(filename string) (*sql.DB, error) {
DB, err := sqlx.Open("sqlite3", filename) db, err := sql.Open("sqlite3", filename)
if err != nil { if err != nil {
return err return nil, err
} }
migrations := migrate.EmbedFileSystemMigrationSource{ migrations := migrate.EmbedFileSystemMigrationSource{
@ -26,13 +24,13 @@ func Connect(filename string) error {
Root: "migrations", Root: "migrations",
} }
n, err := migrate.Exec(DB.DB, "sqlite3", migrations, migrate.Up) n, err := migrate.Exec(db, "sqlite3", migrations, migrate.Up)
if err != nil { if err != nil {
return err return nil, err
} }
fmt.Printf("Applied %d migrations - Database is ready!\n", n) fmt.Printf("Applied %d migrations - Database is ready!\n", n)
return nil return db, nil
} }

View file

@ -1,7 +1,8 @@
-- +migrate Up -- +migrate Up
CREATE table users ( CREATE table users (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
name text NOT NULL first_name text NOT NULL,
email text NOT NULL
); );
-- +migrate Down -- +migrate Down

View file

@ -2,8 +2,8 @@ package main
import ( import (
_ "embed" _ "embed"
"freed/api" "freed/internal/api"
"freed/database" "freed/internal/database"
"log" "log"
"os" "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") 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 { if err != nil {
log.Fatalf("Could not initialize database: %v", err) log.Fatalf("Could not initialize database: %v", err)
@ -31,7 +31,7 @@ func main() {
app.Use(logger.New()) app.Use(logger.New())
// Try to set up API routes // 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) log.Printf("Could not setup /api routes: %s", err)
} }