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
66 lines
1.3 KiB
Go
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
|
|
}
|