Enable db text/binary mode set in override, config

This commit is contained in:
lash 2025-01-22 09:37:11 +00:00
parent d5e636fbd6
commit 8530c45074
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
4 changed files with 62 additions and 14 deletions

View File

@ -15,12 +15,27 @@ var (
DefaultLanguage string
dbConn string
dbConnMissing bool
dbConnMode storage.DbMode
stateDbConn string
stateDbConnMode storage.DbMode
resourceDbConn string
resourceDbConnMode storage.DbMode
userDbConn string
userDbConnMode storage.DbMode
Languages []string
)
type Override struct {
DbConn *string
DbConnMode storage.DbMode
StateConn *string
StateConnMode storage.DbMode
ResourceConn *string
ResourceConnMode storage.DbMode
UserConn *string
UserConnMode storage.DbMode
}
func setLanguage() error {
defaultLanguage = env.GetEnv("DEFAULT_LANGUAGE", defaultLanguage)
languages = strings.Split(env.GetEnv("LANGUAGES", defaultLanguage), ",")
@ -47,19 +62,24 @@ func setConn() error {
return nil
}
func ApplyConn(connStr *string, stateConnStr *string, resourceConnStr *string, userConnStr *string) {
logg.Infof("applyconn", "state", stateConnStr, "user", userConnStr)
if connStr != nil {
dbConn = *connStr
func ApplyConn(override *Override) {
if override.DbConn != nil {
dbConn = *override.DbConn
dbConnMode = override.DbConnMode
}
if stateConnStr != nil {
stateDbConn = *stateConnStr
if override.StateConn != nil {
stateDbConn = *override.StateConn
stateDbConnMode = override.StateConnMode
}
if resourceConnStr != nil {
resourceDbConn = *resourceConnStr
if override.ResourceConn != nil {
resourceDbConn = *override.ResourceConn
resourceDbConnMode = override.ResourceConnMode
}
if userConnStr != nil {
userDbConn = *userConnStr
if override.UserConn != nil {
userDbConn = *override.UserConn
if override.UserConnMode != storage.DBMODE_BINARY {
logg.Warnf("user db non-binary mode ignored")
}
}
if dbConn == "?" {
@ -68,28 +88,31 @@ func ApplyConn(connStr *string, stateConnStr *string, resourceConnStr *string, u
if stateDbConn == "?" {
stateDbConn = dbConn
stateDbConnMode = dbConnMode
}
if resourceDbConn == "?" {
resourceDbConn = dbConn
resourceDbConnMode = dbConnMode
}
if userDbConn == "?" {
userDbConn = dbConn
//userDbConnMode = dbConnMode
}
}
func GetConns() (storage.Conns, error) {
o := storage.NewConns()
c, err := storage.ToConnData(stateDbConn)
c, err := storage.ToConnDataMode(stateDbConn, stateDbConnMode)
if err != nil {
return o, err
}
o.Set(c, storage.STORETYPE_STATE)
c, err = storage.ToConnData(resourceDbConn)
c, err = storage.ToConnDataMode(resourceDbConn, resourceDbConnMode)
if err != nil {
return o, err
}
o.Set(c, storage.STORETYPE_RESOURCE)
c, err = storage.ToConnData(userDbConn)
c, err = storage.ToConnDataMode(userDbConn, userDbConnMode)
if err != nil {
return o, err
}

View File

@ -5,6 +5,8 @@ import (
"net/url"
)
type DbMode uint8
const (
DBTYPE_NONE = iota
DBTYPE_MEM
@ -13,6 +15,11 @@ const (
DBTYPE_POSTGRES
)
const (
DBMODE_BINARY DbMode = iota
DBMODE_TEXT
)
const (
STORETYPE_STATE = iota
STORETYPE_RESOURCE
@ -52,6 +59,7 @@ type ConnData struct {
typ int
str string
domain string
mode DbMode
}
func (cd *ConnData) DbType() int {
@ -66,6 +74,10 @@ func (cd *ConnData) Domain() string {
return cd.domain
}
func (cd *ConnData) Mode() DbMode {
return cd.mode
}
func (cd *ConnData) Path() string {
v, _ := url.Parse(cd.str)
v.RawQuery = ""

View File

@ -61,6 +61,15 @@ func probeMem(s string) (string, string, bool) {
return "", "", true
}
func ToConnDataMode(connStr string, mode DbMode) (ConnData, error) {
o, err := ToConnData(connStr)
if err != nil {
return o, err
}
o.mode = mode
return o, nil
}
func ToConnData(connStr string) (ConnData, error) {
var o ConnData

View File

@ -105,7 +105,11 @@ func (ms *MenuStorageService) getOrCreateDb(ctx context.Context, section string,
if err != nil {
return nil, err
}
newDb = fsdb.NewFsDb().WithBinary()
fsdbInstance := fsdb.NewFsDb()
if connData.Mode() == DBMODE_BINARY {
fsdbInstance = fsdbInstance.WithBinary()
}
newDb = fsdbInstance
} else if dbTyp == DBTYPE_MEM {
logg.WarnCtxf(ctx, "using volatile storage (memdb)")
newDb = memdb.NewMemDb()