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, } }