view auth/opendb.go @ 115:d349db18bece

s/wamos/gemma/g on database schema.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 26 Jun 2018 16:20:04 +0200
parents a9d3990b083b
children bb9120d28950
line wrap: on
line source

package auth

import (
	"database/sql"
	"fmt"
	"strings"

	"gemma.intevation.de/gemma/config"

	_ "github.com/jackc/pgx/stdlib"
)

const driver = "pgx"

// dbQuote quotes strings to be able to contain whitespace
// and backslashes in database DSN strings.
var dbQuote = strings.NewReplacer(`\`, `\\`, `'`, `\'`).Replace

// dbDSN creates a data source name suitable for sql.Open on
// PostgreSQL databases.
func dbDSN(host string, port uint, dbname, user, password string, sslmode string) string {
	return fmt.Sprintf("host='%s' port=%d dbname='%s' user='%s' password='%s' sslmode='%s'",
		dbQuote(host), port, dbQuote(dbname),
		dbQuote(user), dbQuote(password), sslmode)
}

func opendb(user, password string) (*sql.DB, error) {
	return sql.Open(driver, dbDSN(
		config.Config.DBHost, config.Config.DBPort,
		config.Config.DBName,
		user, password,
		config.Config.DBSSLMode))
}