diff options
| -rw-r--r-- | cmd/gosd/main.go | 2 | ||||
| -rw-r--r-- | internal/config/server/server.go | 7 | ||||
| -rw-r--r-- | internal/easyhttp/easyhttp.go | 1 | ||||
| -rw-r--r-- | internal/server/cron/cron.go | 15 | ||||
| -rw-r--r-- | internal/server/repository/repository.go | 7 |
5 files changed, 22 insertions, 10 deletions
diff --git a/cmd/gosd/main.go b/cmd/gosd/main.go index ded379c..e83d6f8 100644 --- a/cmd/gosd/main.go +++ b/cmd/gosd/main.go @@ -29,7 +29,7 @@ func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - if err := cron.Start(ctx, conf, hand); err != nil { + if err := cron.Start(ctx, conf); err != nil { panic(err) } diff --git a/internal/config/server/server.go b/internal/config/server/server.go index 6008ba9..109099e 100644 --- a/internal/config/server/server.go +++ b/internal/config/server/server.go @@ -29,7 +29,6 @@ func New(configFile string) (ServerConfig, error) { conf.DataDir = config.EnvToStr("GOS_DATA_DIR", conf.DataDir, "data") conf.EmailTo = config.EnvToStr("GOS_EMAIL_TO", conf.EmailTo) conf.EmailFrom = config.EnvToStr("GOS_EMAIL_FROM", conf.EmailFrom) - conf.CRONMergeIntervalS = config.EnvToInt("GOS_CRON_MERGE_INTERVAL", conf.CRONMergeIntervalS, 3600) conf.SMTPServer = config.EnvToStr("GOS_SMTP_SERVER", conf.SMTPServer, func() string { hostname, err := os.Hostname() @@ -39,9 +38,13 @@ func New(configFile string) (ServerConfig, error) { return fmt.Sprintf("%s:25", hostname) }) + conf.CRONMergeIntervalS = config.EnvToInt("GOS_CRON_MERGE_INTERVAL", 3600) return conf, nil } func (conf ServerConfig) Partners() []string { - return strings.Split(conf.Partner, ",") + if partners := strings.Split(conf.Partner, ","); partners[0] != "" { + return partners + } + return []string{} } diff --git a/internal/easyhttp/easyhttp.go b/internal/easyhttp/easyhttp.go index 2968454..3f4b367 100644 --- a/internal/easyhttp/easyhttp.go +++ b/internal/easyhttp/easyhttp.go @@ -40,6 +40,7 @@ func Get(ctx context.Context, uri, apiKey string) ([]byte, error) { // Get data from JSON func GetData[T any](ctx context.Context, uri, apiKey string, data *T) error { + log.Println("Getting data from ", uri) bytes, err := Get(ctx, uri, apiKey) if err != nil { return err 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) } |
