mirror of
https://github.com/jwetzell/showbridge-go.git
synced 2026-05-15 05:54:17 +00:00
take reference to module for future process calls
This commit is contained in:
@@ -17,28 +17,31 @@ type DbQuery struct {
|
|||||||
ModuleId string
|
ModuleId string
|
||||||
Query *template.Template
|
Query *template.Template
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
|
module common.DatabaseModule
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dq *DbQuery) Process(ctx context.Context, wrappedPayload common.WrappedPayload) (common.WrappedPayload, error) {
|
func (dq *DbQuery) Process(ctx context.Context, wrappedPayload common.WrappedPayload) (common.WrappedPayload, error) {
|
||||||
if wrappedPayload.Modules == nil {
|
if dq.module == nil {
|
||||||
wrappedPayload.End = true
|
if wrappedPayload.Modules == nil {
|
||||||
return wrappedPayload, errors.New("db.query wrapped payload has no modules")
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, errors.New("db.query wrapped payload has no modules")
|
||||||
|
}
|
||||||
|
|
||||||
|
module, ok := wrappedPayload.Modules[dq.ModuleId]
|
||||||
|
if !ok {
|
||||||
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, fmt.Errorf("db.query unable to find module with id: %s", dq.ModuleId)
|
||||||
|
}
|
||||||
|
|
||||||
|
dbModule, ok := module.(common.DatabaseModule)
|
||||||
|
if !ok {
|
||||||
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, fmt.Errorf("db.query module with id %s is not a DatabaseModule", dq.ModuleId)
|
||||||
|
}
|
||||||
|
dq.module = dbModule
|
||||||
}
|
}
|
||||||
|
|
||||||
module, ok := wrappedPayload.Modules[dq.ModuleId]
|
db := dq.module.Database()
|
||||||
if !ok {
|
|
||||||
wrappedPayload.End = true
|
|
||||||
return wrappedPayload, fmt.Errorf("db.query unable to find module with id: %s", dq.ModuleId)
|
|
||||||
}
|
|
||||||
|
|
||||||
dbModule, ok := module.(common.DatabaseModule)
|
|
||||||
if !ok {
|
|
||||||
wrappedPayload.End = true
|
|
||||||
return wrappedPayload, fmt.Errorf("db.query module with id %s is not a DatabaseModule", dq.ModuleId)
|
|
||||||
}
|
|
||||||
// TODO(jwetzell): cache the module reference after the first run
|
|
||||||
|
|
||||||
db := dbModule.Database()
|
|
||||||
if db == nil {
|
if db == nil {
|
||||||
wrappedPayload.End = true
|
wrappedPayload.End = true
|
||||||
return wrappedPayload, fmt.Errorf("db.query module with id %s returned nil database", dq.ModuleId)
|
return wrappedPayload, fmt.Errorf("db.query module with id %s returned nil database", dq.ModuleId)
|
||||||
|
|||||||
@@ -16,28 +16,31 @@ type KVGet struct {
|
|||||||
ModuleId string
|
ModuleId string
|
||||||
Key string
|
Key string
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
|
module common.KeyValueModule
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kvg *KVGet) Process(ctx context.Context, wrappedPayload common.WrappedPayload) (common.WrappedPayload, error) {
|
func (kvg *KVGet) Process(ctx context.Context, wrappedPayload common.WrappedPayload) (common.WrappedPayload, error) {
|
||||||
if wrappedPayload.Modules == nil {
|
if kvg.module == nil {
|
||||||
wrappedPayload.End = true
|
if wrappedPayload.Modules == nil {
|
||||||
return wrappedPayload, errors.New("kv.get wrapped payload has no modules")
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, errors.New("kv.get wrapped payload has no modules")
|
||||||
|
}
|
||||||
|
|
||||||
|
module, ok := wrappedPayload.Modules[kvg.ModuleId]
|
||||||
|
if !ok {
|
||||||
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, fmt.Errorf("kv.get unable to find module with id: %s", kvg.ModuleId)
|
||||||
|
}
|
||||||
|
|
||||||
|
kvModule, ok := module.(common.KeyValueModule)
|
||||||
|
if !ok {
|
||||||
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, fmt.Errorf("kv.get module with id %s is not a KeyValueModule", kvg.ModuleId)
|
||||||
|
}
|
||||||
|
kvg.module = kvModule
|
||||||
}
|
}
|
||||||
|
|
||||||
module, ok := wrappedPayload.Modules[kvg.ModuleId]
|
value, err := kvg.module.Get(kvg.Key)
|
||||||
if !ok {
|
|
||||||
wrappedPayload.End = true
|
|
||||||
return wrappedPayload, fmt.Errorf("kv.get unable to find module with id: %s", kvg.ModuleId)
|
|
||||||
}
|
|
||||||
|
|
||||||
kvModule, ok := module.(common.KeyValueModule)
|
|
||||||
if !ok {
|
|
||||||
wrappedPayload.End = true
|
|
||||||
return wrappedPayload, fmt.Errorf("kv.get module with id %s is not a KeyValueModule", kvg.ModuleId)
|
|
||||||
}
|
|
||||||
// TODO(jwetzell): cache the module reference after the first run
|
|
||||||
|
|
||||||
value, err := kvModule.Get(kvg.Key)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
wrappedPayload.End = true
|
wrappedPayload.End = true
|
||||||
return wrappedPayload, fmt.Errorf("kv.get error getting key: %w", err)
|
return wrappedPayload, fmt.Errorf("kv.get error getting key: %w", err)
|
||||||
|
|||||||
@@ -19,28 +19,30 @@ type KVSet struct {
|
|||||||
Key string
|
Key string
|
||||||
Value *template.Template
|
Value *template.Template
|
||||||
logger *slog.Logger
|
logger *slog.Logger
|
||||||
|
module common.KeyValueModule
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kvs *KVSet) Process(ctx context.Context, wrappedPayload common.WrappedPayload) (common.WrappedPayload, error) {
|
func (kvs *KVSet) Process(ctx context.Context, wrappedPayload common.WrappedPayload) (common.WrappedPayload, error) {
|
||||||
|
if kvs.module == nil {
|
||||||
|
if wrappedPayload.Modules == nil {
|
||||||
|
wrappedPayload.End = true
|
||||||
|
return wrappedPayload, errors.New("kv.set wrapped payload has no modules")
|
||||||
|
}
|
||||||
|
|
||||||
if wrappedPayload.Modules == nil {
|
module, ok := wrappedPayload.Modules[kvs.ModuleId]
|
||||||
wrappedPayload.End = true
|
if !ok {
|
||||||
return wrappedPayload, errors.New("kv.set wrapped payload has no modules")
|
wrappedPayload.End = true
|
||||||
}
|
return wrappedPayload, fmt.Errorf("kv.set unable to find module with id: %s", kvs.ModuleId)
|
||||||
|
}
|
||||||
|
|
||||||
module, ok := wrappedPayload.Modules[kvs.ModuleId]
|
kvModule, ok := module.(common.KeyValueModule)
|
||||||
if !ok {
|
if !ok {
|
||||||
wrappedPayload.End = true
|
wrappedPayload.End = true
|
||||||
return wrappedPayload, fmt.Errorf("kv.set unable to find module with id: %s", kvs.ModuleId)
|
return wrappedPayload, fmt.Errorf("kv.set module with id %s is not a KeyValueModule", kvs.ModuleId)
|
||||||
|
}
|
||||||
|
kvs.module = kvModule
|
||||||
}
|
}
|
||||||
|
|
||||||
kvModule, ok := module.(common.KeyValueModule)
|
|
||||||
if !ok {
|
|
||||||
wrappedPayload.End = true
|
|
||||||
return wrappedPayload, fmt.Errorf("kv.set module with id %s is not a KeyValueModule", kvs.ModuleId)
|
|
||||||
}
|
|
||||||
// TODO(jwetzell): cache the module reference after the first run
|
|
||||||
|
|
||||||
var valueBuffer bytes.Buffer
|
var valueBuffer bytes.Buffer
|
||||||
err := kvs.Value.Execute(&valueBuffer, wrappedPayload)
|
err := kvs.Value.Execute(&valueBuffer, wrappedPayload)
|
||||||
|
|
||||||
@@ -49,7 +51,7 @@ func (kvs *KVSet) Process(ctx context.Context, wrappedPayload common.WrappedPayl
|
|||||||
return wrappedPayload, err
|
return wrappedPayload, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = kvModule.Set(kvs.Key, valueBuffer.String())
|
err = kvs.module.Set(kvs.Key, valueBuffer.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
wrappedPayload.End = true
|
wrappedPayload.End = true
|
||||||
return wrappedPayload, fmt.Errorf("kv.set error setting key: %w", err)
|
return wrappedPayload, fmt.Errorf("kv.set error setting key: %w", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user