55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package worker
|
|
|
|
import (
|
|
"git.pbiernat.io/egommerce/order-service/internal/service"
|
|
)
|
|
|
|
var (
|
|
CheckoutBasket = "event.CheckoutBasket"
|
|
)
|
|
|
|
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.OrderService) *CommandRunner {
|
|
rnr := &CommandRunner{}
|
|
rnr.cmd = getCommand((data["command"]).(string), srvc)
|
|
|
|
return rnr
|
|
}
|
|
|
|
func getCommand(cmd string, srvc *service.OrderService) Command {
|
|
// fmt.Printf("getCommand: %v\n", cmd)
|
|
var c Command
|
|
|
|
switch cmd { // FIXME
|
|
case "CheckoutBasket":
|
|
c = &CheckoutBasketCommand{srvc}
|
|
}
|
|
|
|
return c
|
|
}
|
|
|
|
func (r *CommandRunner) run(data CommandData) (bool, any) {
|
|
return r.cmd.run(data)
|
|
}
|
|
|
|
type CheckoutBasketCommand struct {
|
|
srvc *service.OrderService // FIXME: Remove service dep
|
|
}
|
|
|
|
func (c *CheckoutBasketCommand) run(data CommandData) (bool, any) { // FIXME: Move run func to WorkerPool
|
|
// reqID := data["request_id"].(string) // FIXME Check input params!
|
|
// basketID := data["basket_id"].(string) // FIXME Check input params!
|
|
|
|
// order, err := ui.CreateOrder(c.srvc, basketID, reqID)
|
|
return true, nil //err == nil, basket
|
|
}
|