[WIP]
This commit is contained in:
41
utils/constructors.go
Normal file
41
utils/constructors.go
Normal 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
3
utils/go.mod
Normal file
@@ -0,0 +1,3 @@
|
||||
module git.acooldomain.co/server-manager/backend-kubernetes-go/utils
|
||||
|
||||
go 1.22.0
|
Reference in New Issue
Block a user