// Copyright 2022 by Sascha L. Teichmann // Use of this source code is governed by the MIT license // that can be found in the LICENSE file. package common import ( "fmt" "strings" ) type DBClientCreator func() (DBClient, error) func IsPostgreSQL(host string) (string, bool) { if strings.HasPrefix(host, "postgres:") { return host[len("postgres:"):], true } return "", false } func CreateDBClientCreator(host string, port int) DBClientCreator { if host, ok := IsPostgreSQL(host); ok { return func() (DBClient, error) { return NewPGClient(host) } } var address string if strings.ContainsRune(host, '/') { address = host } else { address = fmt.Sprintf("%s:%d", host, port) } var proto string if strings.ContainsRune(address, '/') { proto = "unix" } else { proto = "tcp" } return func() (DBClient, error) { return NewRedisClient(proto, address) } }