catalog-service/src/internal/worker/command.go

55 lines
1.2 KiB
Go

package worker
import (
"git.pbiernat.dev/egommerce/catalog-service/internal/service"
)
var (
StockUpdated = "event.WarehouseStockUpdatedEvent"
)
type Command interface {
run(CommandData) (bool, any)
}
type CommandData map[string]interface{}
type CommandRunner struct {
cmd Command
}
func NewCommandRunner(data map[string]interface{}, srvc *service.CatalogService) *CommandRunner {
rnr := &CommandRunner{}
rnr.cmd = getCommand((data["command"]).(string), srvc)
return rnr
}
func getCommand(cmd string, srvc *service.CatalogService) Command {
// fmt.Printf("getCommand: %v\n", cmd)
var c Command
switch cmd { // FIXME
case "StockUpdated":
c = &StockUpdatedCommand{srvc}
}
return c
}
func (r *CommandRunner) run(data CommandData) (bool, any) {
return r.cmd.run(data)
}
type StockUpdatedCommand struct {
srvc *service.CatalogService
}
func (c *StockUpdatedCommand) run(data CommandData) (bool, any) {
// reqID := data["request_id"].(string) // FIXME Check input params!
// productID := int(data["product_id"].(float64)) // FIXME Check input params!
// stock, err := ui.StockUpdated(c.srvc, productID, reqID)
return true, nil //err == nil, basket
}