maximo tejeda 4b60ebc7a7
All checks were successful
dev test / test (push) Successful in 17s
dev test / vulnCheck (push) Successful in 30s
dev test / Ci-Lint (push) Successful in 19s
${{ github.actor }} executed Build Push Prod / build (push) Successful in 4m24s
${{ github.actor }} executed Build Push Prod / deploy (push) Successful in 18s
FIRST commit
2024-12-02 16:07:48 -04:00

66 lines
1.3 KiB
Go

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
}