You've already forked reloading-manager
64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
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
|
|
}
|