From e2f835c01bba7c5f34b5659ba4ddc0e72cd61e0b Mon Sep 17 00:00:00 2001 From: matst80 Date: Sun, 5 Jul 2026 16:08:57 +0200 Subject: [PATCH] fix --- pkg/backofficeadmin/app.go | 9 +++++++-- pkg/backofficeadmin/fileserver.go | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pkg/backofficeadmin/app.go b/pkg/backofficeadmin/app.go index 62eda2a..5cb6217 100644 --- a/pkg/backofficeadmin/app.go +++ b/pkg/backofficeadmin/app.go @@ -51,6 +51,8 @@ type Config struct { CheckoutDataDir string // ProfileDataDir holds the profile event logs (optional, default "" — customer endpoints disabled). ProfileDataDir string + // PromotionsFile holds the path to promotions.json (optional). + PromotionsFile string } // App is the commerce admin control plane. Construct with New, register its @@ -78,7 +80,10 @@ func New(cfg Config) (*App, error) { _ = os.MkdirAll(cfg.DataDir, 0755) reg := cart.NewCartMultationRegistry(cart.NewCartMutationContext(nil)) - promotionsPath := os.Getenv("PROMOTIONS_FILE") + promotionsPath := cfg.PromotionsFile + if promotionsPath == "" { + promotionsPath = os.Getenv("PROMOTIONS_FILE") + } if promotionsPath == "" { promotionsPath = "data/promotions.json" } @@ -156,7 +161,7 @@ func New(cfg Config) (*App, error) { } return &App{ - fs: NewFileServer(cfg.DataDir, cfg.CheckoutDataDir, diskStorage, diskStorageCheckout), + fs: NewFileServer(cfg.DataDir, cfg.CheckoutDataDir, promotionsPath, diskStorage, diskStorageCheckout), hub: NewHub(), cs: customerSrv, }, nil diff --git a/pkg/backofficeadmin/fileserver.go b/pkg/backofficeadmin/fileserver.go index 53ddc56..f267737 100644 --- a/pkg/backofficeadmin/fileserver.go +++ b/pkg/backofficeadmin/fileserver.go @@ -26,14 +26,16 @@ type FileServer struct { // Define fields here dataDir string checkoutDataDir string + promotionsFile string storage actor.LogStorage[cart.CartGrain] checkoutStorage actor.LogStorage[checkout.CheckoutGrain] } -func NewFileServer(dataDir string, checkoutDataDir string, storage actor.LogStorage[cart.CartGrain], checkoutStorage actor.LogStorage[checkout.CheckoutGrain]) *FileServer { +func NewFileServer(dataDir string, checkoutDataDir string, promotionsFile string, storage actor.LogStorage[cart.CartGrain], checkoutStorage actor.LogStorage[checkout.CheckoutGrain]) *FileServer { return &FileServer{ dataDir: dataDir, checkoutDataDir: checkoutDataDir, + promotionsFile: promotionsFile, storage: storage, checkoutStorage: checkoutStorage, } @@ -215,7 +217,10 @@ func (fs *FileServer) CheckoutsHandler(w http.ResponseWriter, r *http.Request) { } func (fs *FileServer) PromotionsHandler(w http.ResponseWriter, r *http.Request) { - fileName := filepath.Join(fs.dataDir, "promotions.json") + fileName := fs.promotionsFile + if fileName == "" { + fileName = filepath.Join(fs.dataDir, "promotions.json") + } if r.Method == http.MethodGet { file, err := os.Open(fileName) if err != nil {