add cron job to sync currencies once in 24 hours

This commit is contained in:
Fran Jurmanović
2023-04-13 18:10:21 +02:00
parent cf1d4f8b1a
commit 84b00a9ddf
22 changed files with 407 additions and 25 deletions

52
pkg/job/currency.go Normal file
View File

@@ -0,0 +1,52 @@
package job
import (
"context"
"log"
"wallet-api/pkg/service"
"wallet-api/pkg/utl/common"
"github.com/go-co-op/gocron"
)
type CurrencyController struct {
service *service.CurrencyService
logger *log.Logger
scheduler *gocron.Scheduler
}
/*
NewCurrencyJob
Initializes CurrencyJob.
Args:
*services.CurrencyService: Currency service
*gin.RouterGroup: Gin Router Group
Returns:
*CurrencyJob: Job for "Currency" route interactions
*/
func NewCurrencyJob(as *service.CurrencyService, scheduler *gocron.Scheduler, logger *log.Logger) *CurrencyController {
currencyScheduler := scheduler.Tag("currency")
wc := &CurrencyController{
service: as,
logger: logger,
scheduler: currencyScheduler,
}
_, err := currencyScheduler.Every(1).Days().Do(wc.Sync)
common.CheckError(err)
currencyScheduler.StartAsync()
log.Println("CurrencyJob started")
return wc
}
func (wc *CurrencyController) Sync() {
wc.logger.Println("CurrencyJob: Syncing currencies")
ctx := context.Background()
wc.service.Sync(ctx)
wc.logger.Println("CurrencyJob: Syncing currencies done")
}