You've already forked reloading-manager
No changes made
This commit is contained in:
63
backend/database/conn.go
Normal file
63
backend/database/conn.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"git.s.int/packages/go/utilities/Env"
|
||||
"git.s.int/reloading-manager/backend/models/bullets"
|
||||
"git.s.int/reloading-manager/backend/models/loads"
|
||||
"git.s.int/reloading-manager/backend/models/manufacturer"
|
||||
"git.s.int/reloading-manager/backend/models/powder"
|
||||
"git.s.int/reloading-manager/backend/models/primers"
|
||||
"github.com/jackc/pgx/v5"
|
||||
"log"
|
||||
)
|
||||
|
||||
const (
|
||||
DbHost Env.EnvironmentVariable = "DB_HOST"
|
||||
DbDatabase Env.EnvironmentVariable = "DB_DATABASE"
|
||||
DbUser Env.EnvironmentVariable = "DB_USER"
|
||||
DbPassword Env.EnvironmentVariable = "DB_PASSWORD"
|
||||
)
|
||||
|
||||
type Database struct {
|
||||
Db *pgx.Conn
|
||||
connected bool
|
||||
databaseName string
|
||||
Bullets *bullets.Queries
|
||||
Manufacturer *manufacturer.Queries
|
||||
Powder *powder.Queries
|
||||
Primer *primers.Queries
|
||||
Loads *loads.Queries
|
||||
}
|
||||
|
||||
func (*Database) DSN() string {
|
||||
dbHost := DbHost.GetEnvString("localhost")
|
||||
dbDatabase := DbDatabase.GetEnvString("loading")
|
||||
dbUser := DbUser.GetEnvString("postgres")
|
||||
dbPassword := DbPassword.GetEnvString("password")
|
||||
|
||||
extraParams := "?sslmode=disable"
|
||||
|
||||
return fmt.Sprintf("postgres://%s:%s@%s:5432/%s%s", dbUser, dbPassword, dbHost, dbDatabase, extraParams)
|
||||
}
|
||||
|
||||
func GetNewDatabase() *Database {
|
||||
var dbSingleton Database
|
||||
|
||||
conn, dbErr := pgx.Connect(context.Background(), dbSingleton.DSN())
|
||||
if dbErr != nil {
|
||||
log.Fatal(dbErr)
|
||||
}
|
||||
|
||||
dbSingleton.Db = conn
|
||||
dbSingleton.connected = true
|
||||
dbSingleton.databaseName = DbDatabase.GetEnvString("loading")
|
||||
dbSingleton.Bullets = bullets.New(dbSingleton.Db)
|
||||
dbSingleton.Manufacturer = manufacturer.New(dbSingleton.Db)
|
||||
dbSingleton.Powder = powder.New(dbSingleton.Db)
|
||||
dbSingleton.Primer = primers.New(dbSingleton.Db)
|
||||
dbSingleton.Loads = loads.New(dbSingleton.Db)
|
||||
|
||||
return &dbSingleton
|
||||
}
|
||||
25
backend/database/middleware.go
Normal file
25
backend/database/middleware.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
type CustomContext struct {
|
||||
echo.Context
|
||||
Db *Database
|
||||
}
|
||||
|
||||
func CreateDatabaseMiddleware() echo.MiddlewareFunc {
|
||||
return func(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
cc := &CustomContext{
|
||||
Context: c,
|
||||
Db: GetNewDatabase(),
|
||||
}
|
||||
|
||||
res := next(cc)
|
||||
|
||||
return res
|
||||
}
|
||||
}
|
||||
}
|
||||
34
backend/database/migrate.go
Normal file
34
backend/database/migrate.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/golang-migrate/migrate"
|
||||
"github.com/golang-migrate/migrate/database/postgres"
|
||||
_ "github.com/golang-migrate/migrate/source/file"
|
||||
"log"
|
||||
)
|
||||
|
||||
func (db *Database) Migrate() {
|
||||
sqlDB, err := sql.Open("postgres", db.DSN())
|
||||
|
||||
driver, err := postgres.WithInstance(sqlDB, &postgres.Config{})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
m, err := migrate.NewWithDatabaseInstance(
|
||||
"file://./migrations",
|
||||
db.databaseName,
|
||||
driver,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
err = m.Up()
|
||||
if err != nil && err.Error() != "no change" {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user