feat(hub): asset management API with PVC storage and image seed
Add internal/assets package that manages app assets (logos, screenshots)
on Hub PVC with automatic seeding from baked-in image copy on first run.
Two new API endpoints: GET /assets/manifest (JSON with SHA-256 checksums)
and GET /assets/file/{name} for controllers to sync assets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"time"
|
||||
|
||||
"gitea.dooplex.hu/admin/felhom-hub/internal/api"
|
||||
"gitea.dooplex.hu/admin/felhom-hub/internal/assets"
|
||||
"gitea.dooplex.hu/admin/felhom-hub/internal/monitor"
|
||||
"gitea.dooplex.hu/admin/felhom-hub/internal/notify"
|
||||
"gitea.dooplex.hu/admin/felhom-hub/internal/store"
|
||||
@@ -117,12 +118,17 @@ func main() {
|
||||
logger.Printf("[INFO] Template fetcher started (every %s)", cfg.Registry.TemplateInterval)
|
||||
}
|
||||
|
||||
// Initialize asset manager (PVC storage with image seed)
|
||||
assetsDir := filepath.Join(cfg.Server.DataDir, "assets")
|
||||
assetsMgr := assets.New(assetsDir, "/usr/share/felhom/assets-seed", logger)
|
||||
|
||||
// Initialize handlers — pass templateFetcher as interface (nil-safe)
|
||||
var templateProvider api.ConfigTemplateProvider
|
||||
if templateFetcher != nil {
|
||||
templateProvider = templateFetcher
|
||||
}
|
||||
apiHandler := api.New(dataStore, cfg.API.ReportAPIKey, cfg.Notifications.ResendAPIKey, cfg.Notifications.FromEmail, templateProvider, logger)
|
||||
apiHandler.SetAssetManager(assetsMgr)
|
||||
|
||||
// Initialize notification dispatcher
|
||||
dispatcher := notify.NewDispatcher(
|
||||
|
||||
Reference in New Issue
Block a user