Files
reloading-manager/backend/database/conn.go
2025-04-18 17:30:11 -04:00

72 lines
2.0 KiB
Go

package database
import (
"context"
"fmt"
"git.siteworxpro.com/packages/go/utilities/Env"
"git.siteworxpro.com/reloading-manager/backend/models/bullets"
"git.siteworxpro.com/reloading-manager/backend/models/loads"
"git.siteworxpro.com/reloading-manager/backend/models/manufacturer"
"git.siteworxpro.com/reloading-manager/backend/models/powder"
"git.siteworxpro.com/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(hidePassword bool) string {
dbHost := DbHost.GetEnvString("localhost")
dbDatabase := DbDatabase.GetEnvString("loading")
dbUser := DbUser.GetEnvString("postgres")
dbPassword := DbPassword.GetEnvString("password")
extraParams := "?sslmode=require"
if dbHost == "localhost" || dbHost == "127.0.0.1" {
extraParams = "?sslmode=disable"
}
if hidePassword {
dbPassword = "********"
}
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(false))
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
}