package notif

import (
	"time"

	"github.com/rs/zerolog"
)

type RetryMessage struct {
	Message   *LogMessage
	Trials    int
	Provider  Provider
	NextRetry time.Time
}

var maxRetries = map[zerolog.Level]int{
	zerolog.DebugLevel: 1,
	zerolog.InfoLevel:  1,
	zerolog.WarnLevel:  3,
	zerolog.ErrorLevel: 5,
	zerolog.FatalLevel: 10,
	zerolog.PanicLevel: 10,
}

func (msg *RetryMessage) MarshalZerologObject(e *zerolog.Event) {
	e.Str("provider", msg.Provider.GetName()).
		Int("trial", msg.Trials+1).
		Str("title", msg.Message.Title)
	if !msg.NextRetry.IsZero() {
		e.Int("max_retries", maxRetries[msg.Message.Level]).
			Time("next_retry", msg.NextRetry)
	}
}