Mercurial > gemma
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 } |