60 lines
1.5 KiB
Go
60 lines
1.5 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 * * * * *", // Every 1 minute
|
|
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")
|
|
} |