package cron

import (
	"log"
	"time"

	"github.com/710leo/urlooker/dataobj"
	"github.com/710leo/urlooker/modules/alarm/backend"
	"github.com/710leo/urlooker/modules/alarm/cache"
	"github.com/710leo/urlooker/modules/alarm/g"
)

func SyncStrategies() {
	t1 := time.NewTicker(time.Duration(g.Config.Web.Interval) * time.Second)
	for {
		syncStrategies()

		<-t1.C
	}

}

func syncStrategies() {

	var strategiesResponse dataobj.StrategyResponse
	err := backend.CallRpc("Web.GetStrategies", "", &strategiesResponse)
	if err != nil {
		log.Println("[ERROR] Web.GetStrategies:", strategiesResponse.Data, strategiesResponse.Message, err)
		return
	}

	rebuildStrategyMap(strategiesResponse.Data)
}

func rebuildStrategyMap(strategiesResponse []*dataobj.Strategy) {

	m := make(map[int64]dataobj.Strategy)
	for _, strategy := range strategiesResponse {
		m[strategy.Id] = *strategy
	}

	cache.StrategyMap.ReInit(m)
}