From 22df44d2e4a6ab928d916da9c1e26aa5d32bbb2d Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 12 Aug 2024 10:17:51 +0300 Subject: initiate merge operation by cron ticker --- internal/server/cron/cron.go | 15 +++++++++------ internal/server/repository/repository.go | 7 ++++++- 2 files changed, 15 insertions(+), 7 deletions(-) (limited to 'internal/server') diff --git a/internal/server/cron/cron.go b/internal/server/cron/cron.go index bdf7fae..4ec3107 100644 --- a/internal/server/cron/cron.go +++ b/internal/server/cron/cron.go @@ -6,22 +6,25 @@ import ( "time" config "codeberg.org/snonux/gos/internal/config/server" - "codeberg.org/snonux/gos/internal/server/handler" + "codeberg.org/snonux/gos/internal/server/repository" ) -func Start(ctx context.Context, conf config.ServerConfig, hand handler.Handler) error { +func Start(ctx context.Context, conf config.ServerConfig) error { go func() { - helloTicker := time.NewTicker(10 * time.Second) - mergeTicker := time.NewTicker(time.Duration(conf.CRONMergeIntervalS) * time.Second) + helloTicker := time.NewTicker(time.Hour) + mergeTicker := time.NewTicker(time.Second * time.Duration(conf.CRONMergeIntervalS)) for { select { case <-ctx.Done(): return case <-helloTicker.C: - log.Println("Hello ticker ticked") + log.Println("CRON hello ticker ticked") case <-mergeTicker.C: - log.Println("CRON merge ticker ticked") + log.Println("CRON ticker initiating remote merge operation") + if err := repository.Instance(conf).MergeRemotely(ctx); err != nil { + log.Println(err) + } } } }() diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index c81d4f9..b6a1edb 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -187,7 +187,12 @@ func (r Repository) Merge(otherEnt types.Entry) error { func (r Repository) MergeRemotely(ctx context.Context) error { var errs []error - for _, partner := range r.conf.Partners() { + partners := r.conf.Partners() + if len(partners) == 0 { + return fmt.Errorf("no parter for remote merge operation configured") + } + + for _, partner := range partners { if err := r.mergeRemotelyFromPartner(ctx, partner); err != nil { errs = append(errs, err) } -- cgit v1.2.3