This commit is contained in:
2025-03-18 16:22:26 +02:00
parent ffdefae94f
commit 64f59ea232
9 changed files with 213 additions and 160 deletions

41
utils/constructors.go Normal file
View File

@@ -0,0 +1,41 @@
package dbhandler
import (
"fmt"
"sync"
"git.acooldomain.co/server-manager/backend-kubernetes-go/db_handler/mongo"
"git.acooldomain.co/server-manager/backend-kubernetes-go/dbhandler"
"git.acooldomain.co/server-manager/backend-kubernetes-go/models"
)
var (
mu sync.Mutex
existingServerAuthHandlers = make(map[string]dbhandler.ServersAuthorizationDbHandler)
)
func configToKey(config any) (string, error) {
switch c := config.(type) {
case models.MongoDBConfig:
return fmt.Sprintf("mongo:%s:%s:%s:%s:%s", c.Url, c.Database, c.Collection, c.Username, c.Password), nil
default:
return "", fmt.Errorf("unknown config format")
}
}
func GetServersAuthDbHandler(config any) (dbhandler.ServersAuthorizationDbHandler, error) {
mu.Lock()
defer mu.Unlock()
key, err := configToKey(config)
if handler, exists := existingServerAuthHandlers[key]; err != nil && exists {
return handler, nil
}
switch c := config.(type) {
case models.MongoDBConfig:
handler, err := mongo.NewServersAuthorizationHandler(c)
return handler, err
}
return nil, fmt.Errorf("Unknown config format")
}

3
utils/go.mod Normal file
View File

@@ -0,0 +1,3 @@
module git.acooldomain.co/server-manager/backend-kubernetes-go/utils
go 1.22.0