cml04-l2-rsm-in/internal/service/service.go
2024-08-20 10:08:32 +02:00

127 lines
4.0 KiB
Go

package service
import (
"context"
cml04eventer "git.espin.casa/albert/cml04-eventer"
"git.espin.casa/albert/cml04-gdm-int/pkg/api"
"google.golang.org/protobuf/proto"
)
const (
NSQTopic string = "RSM"
NSQChannel string = "cml04-l2-rsm-in"
)
type IService interface {
BdReqTelegram(ctx context.Context, telegramData *api.BdRollDataReq) (res *api.BdRollDataRes, err error)
UrReqTelegram(ctx context.Context, telegramData *api.UrRollDataReq) (res *api.UrRollDataRes, err error)
EdReqTelegram(ctx context.Context, telegramData *api.EdRollDataReq) (res *api.EdRollDataRes, err error)
UfReqTelegram(ctx context.Context, telegramData *api.UfRollDataReq) (res *api.UfRollDataRes, err error)
PublishBdRollData(ctx context.Context, telegramData *api.BdRollData) (err error)
PublishUrRollData(ctx context.Context, telegramData *api.UrRollData) (err error)
PublishEdRollData(ctx context.Context, telegramData *api.EdRollData) (err error)
PublishUfRollData(ctx context.Context, telegramData *api.UfRollData) (err error)
}
type service struct {
client api.RollDataServiceClient
publisher cml04eventer.Publisher
}
// PublishBdRollData implements IService.
func (s *service) PublishBdRollData(ctx context.Context, telegramData *api.BdRollData) (err error) {
// create meta data
meta := cml04eventer.NewMetaData()
// set telegram id
meta.Set("telegram_id", 9000)
// marshal telegram data
data, err := proto.Marshal(telegramData)
if err != nil {
return err
}
// set event data
evt := cml04eventer.NewEvent(NSQChannel, NSQTopic, meta, data)
// publish event data
return s.publisher.PublishEvent(evt)
}
// PublishUrRollData implements IService.
func (s *service) PublishUrRollData(ctx context.Context, telegramData *api.UrRollData) (err error) {
// create meta data
meta := cml04eventer.NewMetaData()
// set telegram id
meta.Set("telegram_id", 9001)
// marshal telegram data
data, err := proto.Marshal(telegramData)
if err != nil {
return err
}
// set event data
evt := cml04eventer.NewEvent(NSQChannel, NSQTopic, meta, data)
// publish event data
return s.publisher.PublishEvent(evt)
}
// PublishEdRollData implements IService.
func (s *service) PublishEdRollData(ctx context.Context, telegramData *api.EdRollData) (err error) {
// create meta data
meta := cml04eventer.NewMetaData()
// set telegram id
meta.Set("telegram_id", 9002)
// marshal telegram data
data, err := proto.Marshal(telegramData)
if err != nil {
return err
}
// set event data
evt := cml04eventer.NewEvent(NSQChannel, NSQTopic, meta, data)
// publish event data
return s.publisher.PublishEvent(evt)
}
// PublishUfRollData implements IService.
func (s *service) PublishUfRollData(ctx context.Context, telegramData *api.UfRollData) (err error) {
// create meta data
meta := cml04eventer.NewMetaData()
// set telegram id
meta.Set("telegram_id", 9003)
// marshal telegram data
data, err := proto.Marshal(telegramData)
if err != nil {
return err
}
// set event data
evt := cml04eventer.NewEvent(NSQChannel, NSQTopic, meta, data)
// publish event data
return s.publisher.PublishEvent(evt)
}
// EdReqTelegram implements IService.
func (svc *service) EdReqTelegram(ctx context.Context, req *api.EdRollDataReq) (res *api.EdRollDataRes, err error) {
return svc.client.EdRollData(ctx, req)
}
// UfReqTelegram implements IService.
func (svc *service) UfReqTelegram(ctx context.Context, req *api.UfRollDataReq) (res *api.UfRollDataRes, err error) {
return svc.client.UfRollData(ctx, req)
}
// UrReqTelegram implements IService.
func (svc *service) UrReqTelegram(ctx context.Context, req *api.UrRollDataReq) (res *api.UrRollDataRes, err error) {
return svc.client.UrRollData(ctx, req)
}
// BdReqTelegram implements IService.
func (svc *service) BdReqTelegram(ctx context.Context, req *api.BdRollDataReq) (res *api.BdRollDataRes, err error) {
return svc.client.BdRollData(ctx, req)
}
func NewService(client api.RollDataServiceClient, publisher cml04eventer.Publisher) IService {
return &service{
client: client,
publisher: publisher,
}
}