Config / DB now its own package

This commit is contained in:
stratic-dev
2024-10-12 22:37:42 +01:00
parent 44692e986e
commit 5f975c97b5
76 changed files with 3249 additions and 2359 deletions

77
utils/db/db.go Normal file
View File

@@ -0,0 +1,77 @@
package db
import (
"fmt"
"sync"
"erupe-ce/config"
"erupe-ce/utils/logger"
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq" // Postgres driver
)
var (
instance *sqlx.DB
once sync.Once
dbLogger logger.Logger
)
// InitDB initializes the database connection pool as a singleton
func InitDB(config *config.Config) (*sqlx.DB, error) {
dbLogger = logger.Get().Named("database")
var err error
once.Do(func() {
// Create the postgres DB pool.
connectString := fmt.Sprintf(
"host='%s' port='%d' user='%s' password='%s' dbname='%s' sslmode=disable",
config.Database.Host,
config.Database.Port,
config.Database.User,
config.Database.Password,
config.Database.Database,
)
instance, err = sqlx.Open("postgres", connectString)
if err != nil {
return // Stop here if there's an error opening the database
}
// Test the DB connection.
err = instance.Ping()
if err != nil {
return // Stop here if there's an error pinging the database
}
dbLogger.Info("Database: Started successfully")
// Clear stale data
if config.DebugOptions.ProxyPort == 0 {
_ = instance.MustExec("DELETE FROM sign_sessions")
}
_ = instance.MustExec("DELETE FROM servers")
_ = instance.MustExec(`UPDATE guild_characters SET treasure_hunt=NULL`)
// Clean the DB if the option is on.
if config.DebugOptions.CleanDB {
dbLogger.Info("Database: Started clearing...")
cleanDB(instance)
dbLogger.Info("Database: Finished clearing")
}
})
return instance, err
}
func GetDB() (*sqlx.DB, error) {
if instance == nil {
return nil, fmt.Errorf("database not initialized")
}
return instance, nil
}
// Temporary DB auto clean on startup for quick development & testing.
func cleanDB(db *sqlx.DB) {
_ = db.MustExec("DELETE FROM guild_characters")
_ = db.MustExec("DELETE FROM guilds")
_ = db.MustExec("DELETE FROM characters")
_ = db.MustExec("DELETE FROM users")
}

View File

@@ -1,7 +1,7 @@
package mhfcourse
import (
_config "erupe-ce/config"
"erupe-ce/config"
"math"
"sort"
"time"
@@ -68,7 +68,7 @@ func CourseExists(ID uint16, c []Course) bool {
// GetCourseStruct returns a slice of Course(s) from a rights integer
func GetCourseStruct(rights uint32) ([]Course, uint32) {
var resp []Course
for _, c := range _config.ErupeConfig.DefaultCourses {
for _, c := range config.GetConfig().DefaultCourses {
resp = append(resp, Course{ID: c})
}
s := Courses()

View File

@@ -1,7 +1,7 @@
package mhfitem
import (
_config "erupe-ce/config"
"erupe-ce/config"
"erupe-ce/utils/byteframe"
"erupe-ce/utils/token"
)
@@ -114,7 +114,7 @@ func ReadWarehouseEquipment(bf *byteframe.ByteFrame) MHFEquipment {
for i := 0; i < 3; i++ {
equipment.Decorations[i].ItemID = bf.ReadUint16()
}
if _config.ErupeConfig.ClientID >= _config.G1 {
if config.GetConfig().ClientID >= config.G1 {
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
equipment.Sigils[i].Effects[j].ID = bf.ReadUint16()
@@ -128,7 +128,7 @@ func ReadWarehouseEquipment(bf *byteframe.ByteFrame) MHFEquipment {
equipment.Sigils[i].Unk3 = bf.ReadUint8()
}
}
if _config.ErupeConfig.ClientID >= _config.Z1 {
if config.GetConfig().ClientID >= config.Z1 {
equipment.Unk1 = bf.ReadUint16()
}
return equipment
@@ -144,7 +144,7 @@ func (e MHFEquipment) ToBytes() []byte {
for i := 0; i < 3; i++ {
bf.WriteUint16(e.Decorations[i].ItemID)
}
if _config.ErupeConfig.ClientID >= _config.G1 {
if config.GetConfig().ClientID >= config.G1 {
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
bf.WriteUint16(e.Sigils[i].Effects[j].ID)
@@ -158,7 +158,7 @@ func (e MHFEquipment) ToBytes() []byte {
bf.WriteUint8(e.Sigils[i].Unk3)
}
}
if _config.ErupeConfig.ClientID >= _config.Z1 {
if config.GetConfig().ClientID >= config.Z1 {
bf.WriteUint16(e.Unk1)
}
return bf.Data()