fathom/pkg/datastore/sqlstore/config.go

48 lines
936 B
Go
Raw Normal View History

package sqlstore
2018-05-08 10:31:51 +00:00
import (
"fmt"
mysql "github.com/go-sql-driver/mysql"
)
2018-05-08 10:31:51 +00:00
type Config struct {
Driver string `default:"sqlite3"`
2018-05-08 10:31:51 +00:00
Host string `default:""`
User string `default:""`
Password string `default:""`
Name string `default:"fathom.db"`
SSLMode string `default:""`
2018-05-08 10:31:51 +00:00
}
func (c *Config) DSN() string {
var dsn string
switch c.Driver {
case "postgres":
dsn = fmt.Sprintf("host=%s user=%s password=%s dbname=%s", c.Host, c.User, c.Password, c.Name)
if c.SSLMode != "" {
dsn = dsn + fmt.Sprintf(" sslmode=%s", c.SSLMode)
}
2018-05-08 10:31:51 +00:00
case "mysql":
mc := mysql.NewConfig()
mc.User = c.User
mc.Passwd = c.Password
mc.Addr = c.Host
mc.Net = "tcp"
mc.DBName = c.Name
mc.Params = map[string]string{
"parseTime": "true",
"loc": "Local",
}
if c.SSLMode != "" {
mc.Params["tls"] = c.SSLMode
}
dsn = mc.FormatDSN()
case "sqlite3":
dsn = c.Name + "?_loc=auto"
2018-05-08 10:31:51 +00:00
}
return dsn
}