55 lines
1.2 KiB
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
|
|
}
|