package authserver import ( "database/sql" "fmt" "edge-infra.dev/pkg/lib/gcp/cloudsql" ) func (as *AuthServer) connectDatabase() (*sql.DB, error) { edgeDB := &cloudsql.EdgePostgres{} switch { case as.databaseConnectionName != "": edgeDB = cloudsql.GCPPostgresConnection(as.databaseConnectionName) case as.databaseConnectionName == "" && as.databaseHost != "": if as.databasePort == "" { return nil, fmt.Errorf("database port is required") } edgeDB = cloudsql.PostgresConnection(as.databaseHost, as.databasePort).Password(as.databasePassword) default: return nil, fmt.Errorf("database_connection_name or database_host must be provided") } dbConnection, err := edgeDB. DBName(as.databaseName). Username(as.databaseUsername). NewConnection() if err != nil { return nil, err } if err := dbConnection.Ping(); err != nil { return nil, err } return dbConnection, nil }