...
1 package authserver
2
3 import (
4 "database/sql"
5 "fmt"
6
7 "edge-infra.dev/pkg/lib/gcp/cloudsql"
8 )
9
10 func (as *AuthServer) connectDatabase() (*sql.DB, error) {
11 edgeDB := &cloudsql.EdgePostgres{}
12 switch {
13 case as.databaseConnectionName != "":
14 edgeDB = cloudsql.GCPPostgresConnection(as.databaseConnectionName)
15 case as.databaseConnectionName == "" && as.databaseHost != "":
16 if as.databasePort == "" {
17 return nil, fmt.Errorf("database port is required")
18 }
19 edgeDB = cloudsql.PostgresConnection(as.databaseHost, as.databasePort).Password(as.databasePassword)
20 default:
21 return nil, fmt.Errorf("database_connection_name or database_host must be provided")
22 }
23 dbConnection, err := edgeDB.
24 DBName(as.databaseName).
25 Username(as.databaseUsername).
26 NewConnection()
27 if err != nil {
28 return nil, err
29 }
30 if err := dbConnection.Ping(); err != nil {
31 return nil, err
32 }
33 return dbConnection, nil
34 }
35
View as plain text