summaryrefslogtreecommitdiffci
path: root/internal/blogtrigger/blogtrigger.go
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'internal/blogtrigger/blogtrigger.go')
-rw-r--r--internal/blogtrigger/blogtrigger.go72
1 files changed, 0 insertions, 72 deletions
diff --git a/internal/blogtrigger/blogtrigger.go b/internal/blogtrigger/blogtrigger.go
deleted file mode 100644
index 81efafe..0000000
--- a/internal/blogtrigger/blogtrigger.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package blogtrigger
-
-import (
- "fmt"
- "log/slog"
-
- "github.com/SayaAndy/saya-today-web/config"
- "github.com/SayaAndy/saya-today-web/internal/blog"
- "github.com/go-co-op/gocron/v2"
-)
-
-type BlogTriggerScheduler struct {
- s gocron.Scheduler
- knownBlogPages map[string]map[string]*blog.Page
- blogClient blog.Client
- onTrigger func([]*blog.Page) error
-}
-
-func NewBlogTriggerScheduler(blogClient blog.Client, availableLanguages []config.AvailableLanguageConfig, cron string, onTrigger func([]*blog.Page) error) (*BlogTriggerScheduler, error) {
- s, err := gocron.NewScheduler()
- if err != nil {
- return nil, fmt.Errorf("failed to create new scheduler: %w", err)
- }
-
- knownBlogPages := make(map[string]map[string]*blog.Page, len(availableLanguages))
- for _, lang := range availableLanguages {
- knownBlogPages[lang.Name] = make(map[string]*blog.Page)
- }
-
- bts := &BlogTriggerScheduler{s, knownBlogPages, blogClient, onTrigger}
- defer bts.s.Start()
-
- bts.s.NewJob(gocron.CronJob(cron, false), gocron.NewTask(func(bts *BlogTriggerScheduler) {
- posts, err := bts.scan()
- if err != nil {
- slog.Error("failed to execute scanning new blog pages cron job", slog.String("error", err.Error()))
- return
- }
- if err = onTrigger(posts); err != nil {
- slog.Error("error happened on callback function after scanning new blog pages", slog.String("error", err.Error()))
- return
- }
- }, bts))
-
- if _, err = bts.scan(); err != nil {
- return nil, fmt.Errorf("failed to scan existing blog pages in b2: %w", err)
- }
-
- return bts, nil
-}
-
-func (bts *BlogTriggerScheduler) Close() error {
- return bts.s.Shutdown()
-}
-
-func (bts *BlogTriggerScheduler) scan() (newPages []*blog.Page, err error) {
- newPages = make([]*blog.Page, 0)
- for lang := range bts.knownBlogPages {
- posts, err := bts.blogClient.Scan(lang + "/")
- if err != nil {
- return nil, fmt.Errorf("failed to scan blog pages in b2 on '%s': %w", lang, err)
- }
- for _, post := range posts {
- if _, ok := bts.knownBlogPages[lang][post.FileName]; !ok {
- post.Lang = lang
- newPages = append(newPages, post)
- bts.knownBlogPages[lang][post.FileName] = post
- }
- }
- }
- return newPages, nil
-}