Комментарии 4
Зачитался, красиво
Вопросы:
— зачем зависимость от постгри? Какой у вас access pattern?
— зачем go + floxy, когда есть Erlang/OTP?
Блин, а ведь здорово! Звезду поставил, схоронил, подписался на обновления. Один вопрос - для чего между шагами передавать сырой жсон, а не мапу?
На хэндлеры ложится обязанность сериализации/десериализации, что не выглядит как то, что должно быть в бизнес-логическом слое.
type PaymentHandler struct{}
func (h *PaymentHandler) Name() string { return "payment" }
func (h *PaymentHandler) Execute(ctx context.Context, stepCtx floxy.StepContext, input json.RawMessage) (json.RawMessage, error) { // <- whyyy?
// Process payment logic
return json.Marshal(map[string]any{"status": "paid"})
}
Да, вы правы, не очень удобно. Это я оставил на случай, если разработчик захочет использовать какие-то не стандартные сериализаторы типа easyjson и подобных и для десериализации в структуру. Для более удобной работы есть JSONHandler и TypedHandler в helpers.go, которые используют стандартный encoding/json.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Floxy — лёгкий Saga Workflow Engine на Go