mirror of https://github.com/status-im/fathom.git
build postgres dsn string dynamically
This commit is contained in:
parent
fe624a63a1
commit
b6f3be0e8e
|
@ -1,8 +1,8 @@
|
|||
package sqlstore
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
mysql "github.com/go-sql-driver/mysql"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
|
@ -19,11 +19,23 @@ func (c *Config) 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)
|
||||
params := map[string]string{
|
||||
"host": c.Host,
|
||||
"dbname": c.Name,
|
||||
"user": c.User,
|
||||
"password": c.Password,
|
||||
"sslmode": c.SSLMode,
|
||||
}
|
||||
|
||||
for k, v := range params {
|
||||
if v == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
dsn = dsn + k + "=" + v + " "
|
||||
}
|
||||
|
||||
dsn = strings.TrimSpace(dsn)
|
||||
case "mysql":
|
||||
mc := mysql.NewConfig()
|
||||
mc.User = c.User
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package sqlstore
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestConfigDSN(t *testing.T) {
|
||||
c := Config{
|
||||
Driver: "postgres",
|
||||
User: "john",
|
||||
Password: "foo",
|
||||
}
|
||||
e := fmt.Sprintf("user=%s password=%s", c.User, c.Password)
|
||||
if v := c.DSN(); v != e {
|
||||
t.Errorf("Invalid DSN. Expected %s, got %s", e, v)
|
||||
}
|
||||
|
||||
c = Config{
|
||||
Driver: "postgres",
|
||||
User: "john",
|
||||
Password: "foo",
|
||||
SSLMode: "disable",
|
||||
}
|
||||
e = fmt.Sprintf("user=%s password=%s sslmode=%s", c.User, c.Password, c.SSLMode)
|
||||
if v := c.DSN(); v != e {
|
||||
t.Errorf("Invalid DSN. Expected %s, got %s", e, v)
|
||||
}
|
||||
}
|
|
@ -78,7 +78,9 @@ func (db *sqlstore) UpdatePageviews(pageviews []*models.Pageview) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
query := tx.Rebind(`UPDATE pageviews SET is_bounce = ?, duration = ? WHERE id = ?`)
|
||||
|
||||
stmt, err := tx.Preparex(query)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -86,6 +88,11 @@ func (db *sqlstore) UpdatePageviews(pageviews []*models.Pageview) error {
|
|||
|
||||
for i := range pageviews {
|
||||
_, err = stmt.Exec(query, pageviews[i].IsBounce, pageviews[i].Duration)
|
||||
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
err = tx.Commit()
|
||||
|
|
Loading…
Reference in New Issue