amocrm/internal/service/initial.go

58 lines
1.4 KiB
Go
Raw Normal View History

package service
import (
"amocrm/internal/models"
"amocrm/pkg/amoClient"
pena_social_auth "amocrm/pkg/pena-social-auth"
"context"
"encoding/json"
"github.com/twmb/franz-go/pkg/kgo"
"go.uber.org/zap"
2024-04-17 12:21:06 +00:00
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
)
type Deps struct {
2024-04-17 12:21:06 +00:00
Repository *dal.AmoDal
Logger *zap.Logger
SocialAuthClient *pena_social_auth.Client
AmoClient *amoClient.Amo
KafkaClient *kgo.Client
}
type Service struct {
2024-04-17 12:21:06 +00:00
repository *dal.AmoDal
logger *zap.Logger
socialAuthClient *pena_social_auth.Client
amoClient *amoClient.Amo
kafkaClient *kgo.Client
}
func NewService(deps Deps) *Service {
return &Service{
repository: deps.Repository,
logger: deps.Logger,
socialAuthClient: deps.SocialAuthClient,
amoClient: deps.AmoClient,
kafkaClient: deps.KafkaClient,
}
}
func (s *Service) ToKafkaUpdate(ctx context.Context, message models.KafkaMessage) error {
bytes, err := json.Marshal(message)
if err != nil {
s.logger.Error("error marshal message to kafka", zap.Error(err))
return err
}
responses := s.kafkaClient.ProduceSync(ctx, &kgo.Record{Value: bytes})
for _, response := range responses {
if response.Err != nil {
s.logger.Error("failed to send message on update kafka", zap.Error(response.Err))
return response.Err
}
}
return nil
}