feat: signed releases, release feed, notification (read-only)

This commit is contained in:
fsylvain committed 2026-10-01 15:01:53 +02:00
1 parent a49eec909c
commit 834493a4f5
49 files changed
+4191 -18

No files matched your search

@@ -0,0 +1,29 @@
package useCases
import (
"RenewCMS/internal/domain/update"
"time"
)
type CheckForUpdateUseCase struct {
feed update.ReleaseFeed
store update.StatusStore
currentVersion string
now func() time.Time
}
func NewCheckForUpdateUseCase(feed update.ReleaseFeed, store update.StatusStore, currentVersion string, now func() time.Time) *CheckForUpdateUseCase {
return &CheckForUpdateUseCase{feed: feed, store: store, currentVersion: currentVersion, now: now}
}
func (c *CheckForUpdateUseCase) Check() (update.UpdateStatus, error) {
release, err := c.feed.Latest()
if err != nil {
return update.UpdateStatus{}, err
}
result := update.NewResult(release, c.now())
if err := c.store.Save(result); err != nil {
return update.UpdateStatus{}, err
}
return update.NewStatus(c.currentVersion, &result), nil
}
@@ -0,0 +1,20 @@
package useCases
import "RenewCMS/internal/domain/update"
type GetUpdateStatusUseCase struct {
store update.StatusStore
currentVersion string
}
func NewGetUpdateStatusUseCase(store update.StatusStore, currentVersion string) *GetUpdateStatusUseCase {
return &GetUpdateStatusUseCase{store: store, currentVersion: currentVersion}
}
func (g *GetUpdateStatusUseCase) GetStatus() update.UpdateStatus {
result, found := g.store.Load()
if !found {
return update.NewStatus(g.currentVersion, nil)
}
return update.NewStatus(g.currentVersion, &result)
}