package usecase import ( "time" notifconfig "gateway/internal/model/notification/config" ) const defaultMaxRetry = 5 func effectiveMaxRetry(cfg notifconfig.AsyncConfig) int { if cfg.MaxRetry > 0 { return cfg.MaxRetry } return defaultMaxRetry } // retryDelay returns wait duration before attempt number `nextAttempt` (1-based). func retryDelay(cfg notifconfig.AsyncConfig, nextAttempt int) time.Duration { if nextAttempt < 1 { nextAttempt = 1 } secs := cfg.BackoffSeconds if len(secs) == 0 { secs = []int{1, 5, 30, 300, 1800} } idx := nextAttempt - 1 if idx >= len(secs) { idx = len(secs) - 1 } return time.Duration(secs[idx]) * time.Second }