Yimaru-BackEnd/internal/web_server/cron.go
OneTap Technologies aba4b89bb0 adding getby odd id
2025-04-12 09:27:41 +03:00

57 lines
1.3 KiB
Go

package httpserver
import (
"context"
"log"
eventsvc "github.com/SamuelTariku/FortuneBet-Backend/internal/services/event"
oddssvc "github.com/SamuelTariku/FortuneBet-Backend/internal/services/odds"
"github.com/robfig/cron/v3"
)
func StartDataFetchingCrons(eventService eventsvc.Service, oddsService oddssvc.Service) {
c := cron.New(cron.WithSeconds())
schedule := []struct {
spec string
task func()
}{
{
spec: "0 0 * * * *", // Every hour
task: func() {
if err := eventService.FetchUpcomingEvents(context.Background()); err != nil {
log.Printf(" FetchUpcomingEvents error: %v", err)
}
},
},
{
spec: "*/5 * * * * *", // Every 5 seconds
task: func() {
if err := eventService.FetchLiveEvents(context.Background()); err != nil {
log.Printf(" FetchLiveEvents error: %v", err)
}
},
},
{
spec: "0 */5 * * * *", // Every 5 minutes
task: func() {
if err := oddsService.FetchNonLiveOdds(context.Background()); err != nil {
log.Printf(" FetchNonLiveOdds error: %v", err)
}
},
},
}
for _, job := range schedule {
if _, err := c.AddFunc(job.spec, job.task); err != nil {
log.Fatalf(" Failed to schedule cron job: %v", err)
}
}
c.Start()
log.Println(" Cron jobs started for event and odds services")
}