work in progress: storage (SQL database) service with msgstore functionality
This commit is contained in:
parent
520244fb19
commit
257167f0f6
7 changed files with 30 additions and 12 deletions
|
@ -4,8 +4,10 @@ import (
|
||||||
lib "git.sr.ht/~cco/go-scopes"
|
lib "git.sr.ht/~cco/go-scopes"
|
||||||
"git.sr.ht/~cco/go-scopes/app"
|
"git.sr.ht/~cco/go-scopes/app"
|
||||||
"git.sr.ht/~cco/go-scopes/config"
|
"git.sr.ht/~cco/go-scopes/config"
|
||||||
|
"git.sr.ht/~cco/go-scopes/core/action"
|
||||||
"git.sr.ht/~cco/go-scopes/logging"
|
"git.sr.ht/~cco/go-scopes/logging"
|
||||||
"git.sr.ht/~cco/go-scopes/server"
|
"git.sr.ht/~cco/go-scopes/server"
|
||||||
|
"git.sr.ht/~cco/go-scopes/storage/msgstore"
|
||||||
"git.sr.ht/~cco/go-scopes/storage/sql"
|
"git.sr.ht/~cco/go-scopes/storage/sql"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,21 +28,20 @@ func Config() lib.Config {
|
||||||
(&server.Cfg{Port: ovr("8123", SERVER_PORT)}).
|
(&server.Cfg{Port: ovr("8123", SERVER_PORT)}).
|
||||||
AddRoute("/docs", server.FileServer(ovr("html", DOCROOT))).
|
AddRoute("/docs", server.FileServer(ovr("html", DOCROOT))).
|
||||||
AddRoute("/api", server.MsgHandler().
|
AddRoute("/api", server.MsgHandler().
|
||||||
AddActionProc("demo", server.Async, "test-receiver"))))
|
AddActionProc("scopes|data", server.Async, "msgstore"))))
|
||||||
|
|
||||||
app_c.Add(server_c)
|
msgstore_c := b("msgstore", sql.Start(
|
||||||
|
&sql.Cfg{
|
||||||
|
Driver: "postgres",
|
||||||
|
Connstr: ovr("user=cco password=dummy dbname=scps", PGSQL_CONNSTR),
|
||||||
|
}))
|
||||||
|
msgstore_c.AddAction("scopes|data", action.Base(msgstore.Store))
|
||||||
|
|
||||||
|
app_c.Add(server_c, msgstore_c)
|
||||||
|
|
||||||
return app_c
|
return app_c
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConfigDB() *sql.Cfg {
|
|
||||||
ovr := Overrides().Use
|
|
||||||
return &sql.Cfg{
|
|
||||||
Driver: "postgres",
|
|
||||||
Connstr: ovr("user=cco password=dummy dbname=scps", PGSQL_CONNSTR),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// collect here the names of fields that may be overridden via
|
// collect here the names of fields that may be overridden via
|
||||||
// explicit Override() or SCOPES_* environment settings.
|
// explicit Override() or SCOPES_* environment settings.
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -19,6 +19,7 @@ require (
|
||||||
github.com/json-iterator/go v1.1.12 // indirect
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
|
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
|
||||||
github.com/leodido/go-urn v1.2.4 // indirect
|
github.com/leodido/go-urn v1.2.4 // indirect
|
||||||
|
github.com/lib/pq v1.10.9 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.12 // indirect
|
github.com/mattn/go-colorable v0.1.12 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.19 // indirect
|
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
|
|
@ -36,6 +36,8 @@ github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZX
|
||||||
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
|
github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
|
||||||
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
|
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
|
||||||
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
|
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
|
||||||
|
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
|
||||||
|
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||||
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
||||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"demo/etc"
|
"demo/etc"
|
||||||
|
|
||||||
"git.sr.ht/~cco/go-scopes/app"
|
"git.sr.ht/~cco/go-scopes/app"
|
||||||
|
_ "git.sr.ht/~cco/go-scopes/storage/sql/pgsql"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
@ -5,8 +5,14 @@ import (
|
||||||
"git.sr.ht/~cco/go-scopes/storage/sql"
|
"git.sr.ht/~cco/go-scopes/storage/sql"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func Store(act lib.Action) bool {
|
||||||
|
db := lib.GetState[*sql.Storage](act.Context())
|
||||||
|
StoreDB(db, act.Message())
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// var Store = func(db *sql.Storage, msg lib.Message) {
|
// var Store = func(db *sql.Storage, msg lib.Message) {
|
||||||
func Store(db *sql.Storage, msg lib.Message) {
|
func StoreDB(db *sql.Storage, msg lib.Message) {
|
||||||
q := db.BuildQuery("insert_msg", "messages")
|
q := db.BuildQuery("insert_msg", "messages")
|
||||||
db.Exec(q, msg.Domain(), msg.Action(), msg.Class(), msg.Item(), msg.Payload())
|
db.Exec(q, msg.Domain(), msg.Action(), msg.Class(), msg.Item(), msg.Payload())
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
|
lib "git.sr.ht/~cco/go-scopes"
|
||||||
"git.sr.ht/~cco/go-scopes/logging/log"
|
"git.sr.ht/~cco/go-scopes/logging/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -21,6 +22,12 @@ type Storage struct {
|
||||||
Errors []error
|
Errors []error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Start(cfg *Cfg) lib.Proc {
|
||||||
|
return func(ctx lib.Context) {
|
||||||
|
ctx.WithState(Open(cfg))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type Rows = sql.Rows
|
type Rows = sql.Rows
|
||||||
|
|
||||||
type rowsProc = func(*sql.Rows) error
|
type rowsProc = func(*sql.Rows) error
|
||||||
|
|
|
@ -62,7 +62,7 @@ func BaseTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
|
||||||
|
|
||||||
func MsgstoreTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
|
func MsgstoreTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
|
||||||
msg := message.SimpleMessage("data")
|
msg := message.SimpleMessage("data")
|
||||||
msgstore.Store(db, msg)
|
msgstore.StoreDB(db, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func resetSqlite(db *sql.Storage) {
|
func resetSqlite(db *sql.Storage) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue