package logging import ( "context" "time" "git.espin.casa/albert/cml04-gdm-int/pkg/api" "git.espin.casa/albert/cml04-l2-rsm-out/internal/service" "git.espin.casa/albert/logger" ) type LoggingService struct { log logger.LoggerAdapter next service.IService } // SendEdRollData implements service.IService. func (svc *LoggingService) SendEdRollData(ctx context.Context, rollData *api.EdRollData) (err error) { defer func(start time.Time) { logFields := logger.LogFields{ "took": time.Since(start), "ed_roll_id": rollData.GetEdRollId(), } if err != nil { svc.log.Error("Send level 2 ED roll data failed", err, logFields) } else { svc.log.Info("Send level 2 ED roll success", logFields) } }(time.Now()) return svc.next.SendEdRollData(ctx, rollData) } // SendUfRollData implements service.IService. func (svc *LoggingService) SendUfRollData(ctx context.Context, rollData *api.UfRollData) (err error) { defer func(start time.Time) { logFields := logger.LogFields{ "took": time.Since(start), "uf_roll_id": rollData.GetUfRollId(), } if err != nil { svc.log.Error("Send level 2 UF roll data failed", err, logFields) } else { svc.log.Info("Send level 2 UF roll success", logFields) } }(time.Now()) return svc.next.SendUfRollData(ctx, rollData) } // SendUrRollData implements service.IService. func (svc *LoggingService) SendUrRollData(ctx context.Context, rollData *api.UrRollData) (err error) { defer func(start time.Time) { logFields := logger.LogFields{ "took": time.Since(start), "ur_roll_id": rollData.GetUrRollId(), } if err != nil { svc.log.Error("Send level 2 UR roll data failed", err, logFields) } else { svc.log.Info("Send level 2 UR roll success", logFields) } }(time.Now()) return svc.next.SendUrRollData(ctx, rollData) } // SendBdRollData implements service.IService. func (svc *LoggingService) SendBdRollData(ctx context.Context, rollData *api.BdRollData) (err error) { defer func(start time.Time) { logFields := logger.LogFields{ "took": time.Since(start), "bd_roll_id": rollData.GetBdRollId(), } if err != nil { svc.log.Error("Send level 2 BD roll data failed", err, logFields) } else { svc.log.Info("Send level 2 BD roll success", logFields) } }(time.Now()) return svc.next.SendBdRollData(ctx, rollData) } func NewLogginService(log logger.LoggerAdapter, svc service.IService) service.IService { return &LoggingService{ log: log, next: svc, } }