Refactor to use conndata as menustorageservice conn arg
This commit is contained in:
@@ -12,16 +12,16 @@ const (
|
||||
DBTYPE_POSTGRES
|
||||
)
|
||||
|
||||
type connData struct {
|
||||
type ConnData struct {
|
||||
typ int
|
||||
str string
|
||||
}
|
||||
|
||||
func (cd *connData) DbType() int {
|
||||
func (cd *ConnData) DbType() int {
|
||||
return cd.typ
|
||||
}
|
||||
|
||||
func (cd *connData) String() string {
|
||||
func (cd *ConnData) String() string {
|
||||
return cd.str
|
||||
}
|
||||
|
||||
@@ -44,8 +44,8 @@ func probeGdbm(s string) (string, bool) {
|
||||
return s, true
|
||||
}
|
||||
|
||||
func toConnData(connStr string) (connData, error) {
|
||||
var o connData
|
||||
func ToConnData(connStr string) (ConnData, error) {
|
||||
var o ConnData
|
||||
|
||||
if connStr == "" {
|
||||
return o, nil
|
||||
|
||||
@@ -5,32 +5,23 @@ import (
|
||||
)
|
||||
|
||||
func TestParseConnStr(t *testing.T) {
|
||||
svc := NewMenuStorageService("")
|
||||
err := svc.SetConn("postgres://foo:bar@localhost:5432/baz")
|
||||
_, err := ToConnData("postgres://foo:bar@localhost:5432/baz")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = svc.SetConn("/foo/bar/baz.gdbm")
|
||||
_, err = ToConnData("/foo/bar")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = svc.SetConn("foo/bar/baz.gdbm")
|
||||
_, err = ToConnData("/foo/bar/")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err = ToConnData("foo/bar")
|
||||
if err == nil {
|
||||
t.Fatalf("expected error")
|
||||
}
|
||||
err = svc.SetConn("http://foo/bar")
|
||||
if err == nil {
|
||||
t.Fatalf("expected error")
|
||||
}
|
||||
err = svc.SetConn("foo/bar/baz.txt")
|
||||
if err == nil {
|
||||
t.Fatalf("expected error")
|
||||
}
|
||||
err = svc.SetConn("/foo/bar")
|
||||
if err == nil {
|
||||
t.Fatalf("expected error")
|
||||
}
|
||||
err = svc.SetConn("foo/bar")
|
||||
_, err = ToConnData("http://foo/bar")
|
||||
if err == nil {
|
||||
t.Fatalf("expected error")
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import (
|
||||
"git.defalsify.org/vise.git/logging"
|
||||
"git.defalsify.org/vise.git/persist"
|
||||
"git.defalsify.org/vise.git/resource"
|
||||
"git.grassecon.net/urdt/ussd/initializers"
|
||||
gdbmstorage "git.grassecon.net/urdt/ussd/internal/storage/db/gdbm"
|
||||
)
|
||||
|
||||
@@ -28,42 +27,22 @@ type StorageService interface {
|
||||
}
|
||||
|
||||
type MenuStorageService struct {
|
||||
conn connData
|
||||
conn ConnData
|
||||
resourceDir string
|
||||
resourceStore db.Db
|
||||
stateStore db.Db
|
||||
userDataStore db.Db
|
||||
}
|
||||
|
||||
func buildConnStr() string {
|
||||
host := initializers.GetEnv("DB_HOST", "localhost")
|
||||
user := initializers.GetEnv("DB_USER", "postgres")
|
||||
password := initializers.GetEnv("DB_PASSWORD", "")
|
||||
dbName := initializers.GetEnv("DB_NAME", "")
|
||||
port := initializers.GetEnv("DB_PORT", "5432")
|
||||
|
||||
connString := fmt.Sprintf(
|
||||
"postgres://%s:%s@%s:%s/%s",
|
||||
user, password, host, port, dbName,
|
||||
)
|
||||
logg.Debugf("pg conn string", "conn", connString)
|
||||
|
||||
return connString
|
||||
}
|
||||
|
||||
func NewMenuStorageService(resourceDir string) *MenuStorageService {
|
||||
return &MenuStorageService{
|
||||
resourceDir: resourceDir,
|
||||
}
|
||||
}
|
||||
|
||||
func (ms *MenuStorageService) SetConn(connStr string) error {
|
||||
o, err := toConnData(connStr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ms.conn = o
|
||||
return nil
|
||||
func (ms *MenuStorageService) WithConn(conn ConnData) *MenuStorageService {
|
||||
ms.conn = conn
|
||||
return ms
|
||||
}
|
||||
|
||||
func (ms *MenuStorageService) getOrCreateDb(ctx context.Context, existingDb db.Db, section string) (db.Db, error) {
|
||||
|
||||
@@ -44,10 +44,15 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) {
|
||||
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
conn, err := storage.ToConnData(connStr)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "connstr parse err: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
resourceDir := scriptDir
|
||||
menuStorageService := storage.NewMenuStorageService(resourceDir)
|
||||
|
||||
err = menuStorageService.SetConn(connStr)
|
||||
menuStorageService.WithConn(conn)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "conn error: %v", err)
|
||||
os.Exit(1)
|
||||
|
||||
Reference in New Issue
Block a user