Refactor to use conndata as menustorageservice conn arg

This commit is contained in:
lash 2025-01-04 20:36:18 +00:00
parent f61e65f4fe
commit 450dfa02cc
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
12 changed files with 98 additions and 125 deletions

View File

@ -8,7 +8,6 @@ import (
"os"
"os/signal"
"path"
"path/filepath"
"strconv"
"syscall"
@ -55,12 +54,13 @@ func main() {
flag.UintVar(&port, "p", initializers.GetEnvUint("PORT", 7123), "http port")
flag.Parse()
if connStr == ".state" {
connStr, err = filepath.Abs(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, "auto connstr generate error: %v", err)
os.Exit(1)
}
if connStr != "" {
connStr = config.DbConn
}
connData, err := storage.ToConnData(config.DbConn)
if err != nil {
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
os.Exit(1)
}
logg.Infof("start command", "build", build, "dbdir", connStr, "resourcedir", resourceDir, "outputsize", size)
@ -81,7 +81,7 @@ func main() {
}
menuStorageService := storage.NewMenuStorageService(resourceDir)
err = menuStorageService.SetConn(connStr)
menuStorageService = menuStorageService.WithConn(connData)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
os.Exit(1)

View File

@ -7,7 +7,6 @@ import (
"os"
"os/signal"
"path"
"path/filepath"
"syscall"
"git.defalsify.org/vise.git/engine"
@ -47,8 +46,8 @@ func (p *asyncRequestParser) GetInput(r any) ([]byte, error) {
func main() {
config.LoadConfig()
var sessionId string
var connStr string
var sessionId string
var resourceDir string
var size uint
var database string
@ -59,19 +58,20 @@ func main() {
flag.StringVar(&sessionId, "session-id", "075xx2123", "session id")
flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir")
flag.StringVar(&connStr, "c", ".state", "connection string")
flag.StringVar(&connStr, "c", "", "connection string")
flag.BoolVar(&engineDebug, "d", false, "use engine debug output")
flag.UintVar(&size, "s", 160, "max size of output")
flag.StringVar(&host, "h", initializers.GetEnv("HOST", "127.0.0.1"), "http host")
flag.UintVar(&port, "p", initializers.GetEnvUint("PORT", 7123), "http port")
flag.Parse()
if connStr == ".state" {
connStr, err = filepath.Abs(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, "auto connstr generate error: %v", err)
os.Exit(1)
}
if connStr != "" {
connStr = config.DbConn
}
connData, err := storage.ToConnData(config.DbConn)
if err != nil {
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
os.Exit(1)
}
logg.Infof("start command", "connstr", connStr, "resourcedir", resourceDir, "outputsize", size, "sessionId", sessionId)
@ -92,7 +92,7 @@ func main() {
}
menuStorageService := storage.NewMenuStorageService(resourceDir)
err = menuStorageService.SetConn(connStr)
menuStorageService = menuStorageService.WithConn(connData)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
os.Exit(1)

View File

@ -8,7 +8,6 @@ import (
"os"
"os/signal"
"path"
"path/filepath"
"strconv"
"syscall"
@ -47,19 +46,20 @@ func main() {
var err error
flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir")
flag.StringVar(&connStr, "c", ".state", "connection string")
flag.StringVar(&connStr, "c", "", "connection string")
flag.BoolVar(&engineDebug, "d", false, "use engine debug output")
flag.UintVar(&size, "s", 160, "max size of output")
flag.StringVar(&host, "h", initializers.GetEnv("HOST", "127.0.0.1"), "http host")
flag.UintVar(&port, "p", initializers.GetEnvUint("PORT", 7123), "http port")
flag.Parse()
if connStr == ".state" {
connStr, err = filepath.Abs(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, "auto connstr generate error: %v", err)
os.Exit(1)
}
if connStr != "" {
connStr = config.DbConn
}
connData, err := storage.ToConnData(config.DbConn)
if err != nil {
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
os.Exit(1)
}
logg.Infof("start command", "connstr", connStr, "resourcedir", resourceDir, "outputsize", size)
@ -80,12 +80,8 @@ func main() {
}
menuStorageService := storage.NewMenuStorageService(resourceDir)
err = menuStorageService.SetConn(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
os.Exit(1)
}
menuStorageService = menuStorageService.WithConn(connData)
rs, err := menuStorageService.GetResource(ctx)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())

View File

@ -6,7 +6,6 @@ import (
"fmt"
"os"
"path"
"path/filepath"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/logging"
@ -39,17 +38,18 @@ func main() {
var err error
flag.StringVar(&sessionId, "session-id", "075xx2123", "session id")
flag.StringVar(&connStr, "c", ".state", "connection string")
flag.StringVar(&connStr, "c", "", "connection string")
flag.BoolVar(&engineDebug, "d", false, "use engine debug output")
flag.UintVar(&size, "s", 160, "max size of output")
flag.Parse()
if connStr == ".state" {
connStr, err = filepath.Abs(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, "auto connstr generate error: %v", err)
os.Exit(1)
}
if connStr != "" {
connStr = config.DbConn
}
connData, err := storage.ToConnData(config.DbConn)
if err != nil {
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
os.Exit(1)
}
logg.Infof("start command", "connstr", connStr, "outputsize", size)
@ -69,12 +69,7 @@ func main() {
resourceDir := scriptDir
menuStorageService := storage.NewMenuStorageService(resourceDir)
err = menuStorageService.SetConn(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())
os.Exit(1)
}
menuStorageService = menuStorageService.WithConn(connData)
rs, err := menuStorageService.GetResource(ctx)
if err != nil {

View File

@ -23,19 +23,19 @@ type StorageServices interface {
GetPersister(ctx context.Context) (*persist.Persister, error)
GetUserdataDb(ctx context.Context) (db.Db, error)
GetResource(ctx context.Context) (resource.Resource, error)
SetConn(connStr string) error
SetConn(conn storage.ConnData)
}
type StorageService struct {
svc *storage.MenuStorageService
}
func NewStorageService(connStr string) (*StorageService, error) {
func NewStorageService(conn storage.ConnData) (*StorageService, error) {
svc := &StorageService{
svc: storage.NewMenuStorageService(""),
}
err := svc.SetConn(connStr)
return svc, err
svc.SetConn(conn)
return svc, nil
}
func(ss *StorageService) GetPersister(ctx context.Context) (*persist.Persister, error) {
@ -50,6 +50,6 @@ func(ss *StorageService) GetResource(ctx context.Context) (resource.Resource, er
return nil, errors.New("not implemented")
}
func(ss *StorageService) SetConn(connStr string) error {
return ss.svc.SetConn(connStr)
func(ss *StorageService) SetConn(conn storage.ConnData) {
ss.svc = ss.svc.WithConn(conn)
}

View File

@ -34,6 +34,7 @@ var (
VoucherTransfersURL string
VoucherDataURL string
CheckAliasURL string
DbConn string
)
func setBase() error {
@ -43,14 +44,20 @@ func setBase() error {
dataURLBase = initializers.GetEnv("DATA_URL_BASE", "http://localhost:5006")
BearerToken = initializers.GetEnv("BEARER_TOKEN", "")
_, err = url.JoinPath(custodialURLBase, "/foo")
_, err = url.Parse(custodialURLBase)
if err != nil {
return err
}
_, err = url.JoinPath(dataURLBase, "/bar")
_, err = url.Parse(dataURLBase)
if err != nil {
return err
}
return nil
}
func setConn() error {
DbConn = initializers.GetEnv("DB_CONN", "")
return nil
}
@ -60,6 +67,10 @@ func LoadConfig() error {
if err != nil {
return err
}
err = setConn()
if err != nil {
return err
}
CreateAccountURL, _ = url.JoinPath(custodialURLBase, createAccountPath)
TrackStatusURL, _ = url.JoinPath(custodialURLBase, trackStatusPath)
BalanceURL, _ = url.JoinPath(custodialURLBase, balancePathPrefix)

View File

@ -7,7 +7,6 @@ import (
"fmt"
"os"
"path"
"path/filepath"
"git.defalsify.org/vise.git/logging"
"git.grassecon.net/urdt/ussd/config"
@ -36,19 +35,20 @@ func main() {
var err error
flag.StringVar(&sessionId, "session-id", "075xx2123", "session id")
flag.StringVar(&connStr, "c", ".", "connection string")
flag.StringVar(&connStr, "c", "", "connection string")
flag.BoolVar(&engineDebug, "d", false, "use engine debug output")
flag.Parse()
if connStr == "." {
connStr, err = filepath.Abs(".state/state.gdbm")
if err != nil {
fmt.Fprintf(os.Stderr, "auto connstr generate error: %v", err)
os.Exit(1)
}
if connStr != "" {
connStr = config.DbConn
}
connData, err := storage.ToConnData(config.DbConn)
if err != nil {
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
os.Exit(1)
}
logg.Infof("start command", "connstr", connStr)
logg.Infof("start command", "conn", connData)
ctx := context.Background()
ctx = context.WithValue(ctx, "SessionId", sessionId)
@ -56,12 +56,8 @@ func main() {
resourceDir := scriptDir
menuStorageService := storage.NewMenuStorageService(resourceDir)
err = menuStorageService.SetConn(connStr)
if err != nil {
fmt.Fprintf(os.Stderr, "connection string error: %v", err)
os.Exit(1)
}
menuStorageService = menuStorageService.WithConn(connData)
store, err := menuStorageService.GetUserdataDb(ctx)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())

View File

@ -6,7 +6,6 @@ import (
"fmt"
"os"
"path"
"path/filepath"
"git.grassecon.net/urdt/ussd/config"
"git.grassecon.net/urdt/ussd/initializers"
@ -40,12 +39,13 @@ func main() {
flag.BoolVar(&engineDebug, "d", false, "use engine debug output")
flag.Parse()
if connStr == "." {
connStr, err = filepath.Abs(".state/state.gdbm")
if err != nil {
fmt.Fprintf(os.Stderr, "auto connstr generate error: %v", err)
os.Exit(1)
}
if connStr != "" {
connStr = config.DbConn
}
connData, err := storage.ToConnData(config.DbConn)
if err != nil {
fmt.Fprintf(os.Stderr, "connstr err: %v", err)
os.Exit(1)
}
ctx := context.Background()
@ -54,7 +54,7 @@ func main() {
resourceDir := scriptDir
menuStorageService := storage.NewMenuStorageService(resourceDir)
err = menuStorageService.SetConn(connStr)
menuStorageService = menuStorageService.WithConn(connData)
if err != nil {
fmt.Fprintf(os.Stderr, "connection string error: %v", err)
os.Exit(1)

View File

@ -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

View File

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

View File

@ -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) {

View File

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