view 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
line wrap: on
line source

package auth

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

	"gemma.intevation.de/gemma/config"

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

var ErrNotImplementedYet = errors.New("Not implemented, yet!")

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))
}