package tools

import "time"

// Ticker запускает функцию fn с указанным интервалом в отдельной горутине
// Возвращает канал для остановки тикера
func Ticker(fn func(), interval time.Duration) chan struct{} {
	if interval <= 0 {
		interval = time.Second
	}
	ticker := time.NewTicker(interval)
	stopChan := make(chan struct{})
	fn()
	go func() {
		for {
			select {
			case <-ticker.C:
				fn()
			case <-stopChan:
				ticker.Stop()
				return
			}
		}
	}()

	return stopChan
}
