Sets up internal packages for database and api
This commit is contained in:
parent
b059fa25cb
commit
d82a1c9215
4 changed files with 15 additions and 15 deletions
|
|
@ -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 == "" {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
8
main.go
8
main.go
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue