summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-08-12 10:17:51 +0300
committerPaul Buetow <paul@buetow.org>2024-08-12 10:17:51 +0300
commit22df44d2e4a6ab928d916da9c1e26aa5d32bbb2d (patch)
tree1673d05d569a2b18b32e33d964ec7e73f0fc29cd /internal/server
parent85a4cdea7c41cfd2f4fcbe1554494fb0b78ae338 (diff)
initiate merge operation by cron ticker
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/cron/cron.go15
-rw-r--r--internal/server/repository/repository.go7
2 files changed, 15 insertions, 7 deletions
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)
}