package main import ( "context" "errors" "fmt" "github.com/breel-render/spoc-bot-vr/model" ) type SlackToModel struct { pipeline Pipeline } type Models struct { Event model.Event Message model.Message Thread model.Thread } func NewSlackToModelPipeline(ctx context.Context, cfg Config) (Pipeline, error) { reader, err := NewQueue(ctx, "slack_event", cfg.driver) if err != nil { return Pipeline{}, err } writer, err := NewQueue(ctx, "new_message", cfg.driver) if err != nil { return Pipeline{}, err } return Pipeline{ writer: writer, reader: reader, process: newSlackToModelProcess(cfg), }, nil } func newSlackToModelProcess(cfg Config) processFunc { return func(ctx context.Context, slack []byte) ([]byte, error) { m, err := ParseSlack(slack, cfg.AssetPattern, cfg.DatacenterPattern, cfg.EventNamePattern) if err != nil { return nil, fmt.Errorf("failed to deserialize slack %w: %s", err, slack) } return m.Serialize(), nil } } func ParseSlack([]byte, string, string, string) (interface{ Serialize() []byte }, error) { return nil, errors.New("not impl") }