mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-11 15:53:04 +03:00
46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package job
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/pocket-id/pocket-id/backend/internal/service"
|
|
)
|
|
|
|
type GeoLiteUpdateJobs struct {
|
|
geoLiteService *service.GeoLiteService
|
|
}
|
|
|
|
func (s *Scheduler) RegisterGeoLiteUpdateJobs(ctx context.Context, geoLiteService *service.GeoLiteService) error {
|
|
// Check if the service needs periodic updating
|
|
if geoLiteService.DisableUpdater() {
|
|
// Nothing to do
|
|
return nil
|
|
}
|
|
|
|
jobs := &GeoLiteUpdateJobs{geoLiteService: geoLiteService}
|
|
|
|
// Register the job to run every day, at 5 minutes past midnight
|
|
err := s.registerJob(ctx, "UpdateGeoLiteDB", "5 * */1 * *", jobs.updateGoeLiteDB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Run the job immediately on startup, with a 1s delay
|
|
go func() {
|
|
time.Sleep(time.Second)
|
|
err = jobs.updateGoeLiteDB(ctx)
|
|
if err != nil {
|
|
// Log the error only, but don't return it
|
|
log.Printf("Failed to Update GeoLite database: %v", err)
|
|
}
|
|
}()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (j *GeoLiteUpdateJobs) updateGoeLiteDB(ctx context.Context) error {
|
|
return j.geoLiteService.UpdateDatabase(ctx)
|
|
}
|