package nats import ( "encoding/json" "fmt" "log/slog" "git.maximotejeda.com/maximo/dolar/internal/application/core/domain" "github.com/nats-io/nats.go" ) type Adapter struct { conn *nats.Conn log *slog.Logger } func NewAdapter(dataSourceURL string) (*Adapter, error) { log := slog.Default() log = log.With("adapter", "nats") conn, err := nats.Connect(dataSourceURL) if err != nil { log.Error("connecting nats", "error", err) return nil, err } return &Adapter{conn: conn, log: log}, nil } func (a Adapter) ChangeRegistered(change *domain.Message) error { if change == nil { return fmt.Errorf("nil structure") } data, err := json.Marshal(change) if err != nil { return fmt.Errorf("marshaling struct: %w", err) } err = a.conn.Publish("dolar-crawler", data) if err != nil { a.log.Error(err.Error()) } err = a.conn.Publish("dolar-bot-change", data) if err != nil { a.log.Error(err.Error()) } return nil } func (a Adapter) NewInstRegistered(change *domain.Message) error { if change == nil { return fmt.Errorf("nil structure") } data, err := json.Marshal(change) if err != nil { return fmt.Errorf("marshaling struct: %w", err) } err = a.conn.Publish("dolar-crawler", data) if err != nil { a.log.Error(err.Error()) } err = a.conn.Publish("dolar-bot-change", data) if err != nil { a.log.Error(err.Error()) } return nil }