40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package services
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"git.faercol.me/faercol/polyculeconnect/polyculeconnect/config"
|
|
"git.faercol.me/faercol/polyculeconnect/polyculeconnect/connector"
|
|
"git.faercol.me/faercol/polyculeconnect/polyculeconnect/logger"
|
|
"github.com/dexidp/dex/storage"
|
|
"github.com/dexidp/dex/storage/memory"
|
|
"github.com/dexidp/dex/storage/sql"
|
|
)
|
|
|
|
func InitStorage(conf *config.AppConfig) (storage.Storage, error) {
|
|
var storageType storage.Storage
|
|
var err error
|
|
switch conf.StorageType {
|
|
case "memory":
|
|
storageType = memory.New(logger.L)
|
|
case "sqlite":
|
|
sqlconfig := sql.SQLite3{
|
|
File: conf.StorageConfig.File,
|
|
}
|
|
storageType, err = sqlconfig.Open(logger.L)
|
|
if err != nil {
|
|
logger.L.Fatalf("Failed to initialize sqlite backend: %s", err.Error())
|
|
}
|
|
default:
|
|
return storageType, fmt.Errorf("unsupported storage backend type: %s", conf.StorageType)
|
|
}
|
|
return storageType, nil
|
|
}
|
|
|
|
func AddDefaultBackend(s storage.Storage) error {
|
|
if err := s.CreateConnector(connector.RefuseAllConnectorConfig); err != nil && !errors.Is(err, storage.ErrAlreadyExists) {
|
|
return fmt.Errorf("failed to add default backend: %w", err)
|
|
}
|
|
return nil
|
|
}
|