comparison auth/opendb.go @ 28:714787accd26

Fetch database connection string parts from configuration.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 25 Jun 2018 15:34:32 +0200
parents 96a429c5f227
children a9d3990b083b
comparison
equal deleted inserted replaced
27:c3e2cd7fa46f 28:714787accd26
1 package auth 1 package auth
2 2
3 import ( 3 import (
4 "database/sql" 4 "database/sql"
5 "errors" 5 "errors"
6 "fmt"
7 "strings"
8
9 "gemma.intevation.de/gemma/config"
10
11 _ "github.com/jackc/pgx/stdlib"
6 ) 12 )
7 13
8 var ErrNotImplementedYet = errors.New("Not implemented, yet!") 14 var ErrNotImplementedYet = errors.New("Not implemented, yet!")
9 15
16 const driver = "pgx"
17
18 // dbQuote quotes strings to be able to contain whitespace
19 // and backslashes in database DSN strings.
20 var dbQuote = strings.NewReplacer(`\`, `\\`, `'`, `\'`).Replace
21
22 // dbDSN creates a data source name suitable for sql.Open on
23 // PostgreSQL databases.
24 func dbDSN(host string, port uint, dbname, user, password string, sslmode string) string {
25 return fmt.Sprintf("host='%s' port=%d dbname='%s' user='%s' password='%s' sslmode='%s'",
26 dbQuote(host), port, dbQuote(dbname),
27 dbQuote(user), dbQuote(password), sslmode)
28 }
29
10 func opendb(user, password string) (*sql.DB, error) { 30 func opendb(user, password string) (*sql.DB, error) {
11 return nil, ErrNotImplementedYet 31 return sql.Open(driver, dbDSN(
32 config.Config.DBHost, config.Config.DBPort,
33 config.Config.DBName,
34 user, password,
35 config.Config.DBSSLMode))
12 } 36 }