-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathscheduler.go
34 lines (30 loc) · 937 Bytes
/
scheduler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package scheduler
import (
"log"
"time"
"github.com/estnafinema0/Github-Trends-Aggregator/server/config"
"github.com/estnafinema0/Github-Trends-Aggregator/server/fetcher"
"github.com/estnafinema0/Github-Trends-Aggregator/server/models"
"github.com/estnafinema0/Github-Trends-Aggregator/server/store"
"github.com/estnafinema0/Github-Trends-Aggregator/server/ws"
)
// StartScheduler starts the periodic fetching of trends
func StartScheduler(store *store.Store, hub *ws.Hub, l *log.Logger) {
ticker := time.NewTicker(config.FetchInterval)
defer ticker.Stop()
// First run immediately
for {
l.Println("Starting trend fetching...")
var repos []models.Repository
var err error
repos, err = fetcher.FetchTrendingRepos(l)
if err != nil {
l.Printf("Error fetching trends: %v\n", err)
} else {
store.UpdateRepos(repos)
// Notify connected clients via WebSocket
hub.Broadcast(l, repos)
}
<-ticker.C
}
}