summaryrefslogtreecommitdiff
path: root/internal/storage/sql_provider.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/storage/sql_provider.go')
-rw-r--r--internal/storage/sql_provider.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/internal/storage/sql_provider.go b/internal/storage/sql_provider.go
index d738cd80c..3ba918b87 100644
--- a/internal/storage/sql_provider.go
+++ b/internal/storage/sql_provider.go
@@ -3,6 +3,7 @@ package storage
import (
"context"
"crypto/sha256"
+ "crypto/x509"
"database/sql"
"errors"
"fmt"
@@ -19,6 +20,20 @@ import (
"github.com/authelia/authelia/v4/internal/model"
)
+// NewProvider dynamically initializes a storage.Provider given a *schema.Configuration and *x509.CertPool.
+func NewProvider(config *schema.Configuration, caCertPool *x509.CertPool) (provider Provider) {
+ switch {
+ case config.Storage.PostgreSQL != nil:
+ return NewPostgreSQLProvider(config, caCertPool)
+ case config.Storage.MySQL != nil:
+ return NewMySQLProvider(config, caCertPool)
+ case config.Storage.Local != nil:
+ return NewSQLiteProvider(config)
+ default:
+ return nil
+ }
+}
+
// NewSQLProvider generates a generic SQLProvider to be used with other SQL provider NewUp's.
func NewSQLProvider(config *schema.Configuration, name, driverName, dataSourceName string) (provider SQLProvider) {
db, err := sqlx.Open(driverName, dataSourceName)