package workers

import (
	"time"

	"github.com/go-co-op/gocron"
	"github.com/pingcap/dbaas/billing2/config"
	"github.com/pingcap/dbaas/billing2/utils/panicIf"
	"github.com/spf13/viper"
)

func RunWorker() {
	s := gocron.NewScheduler(time.UTC)
	_, err := s.Every(viper.GetString(config.InvoiceWorkerCheckInterval)).Do(CreateInvoiceWorker)
	panicIf.Error(err)
	_, err = s.Every(viper.GetString(config.SyncPayableWorkerInterval)).Do(SyncTenantPayableWorker)
	panicIf.Error(err)
	_, err = s.Every(viper.GetString(config.CalculateCacheInterval)).Do(CalculateCache)
	panicIf.Error(err)
	_, err = s.Every(viper.GetString(config.RemoveUnusedCostsInterval)).Do(RemoveUnusedCosts)
	panicIf.Error(err)
	_, err = s.Every(viper.GetString(config.MergeSmallCostsInterval)).Do(MergeSmallCosts)
	panicIf.Error(err)
	s.StartAsync()
}
