From acfce68f45c90df82c77fcb15206480db9c424a4 Mon Sep 17 00:00:00 2001 From: darkweak Date: Tue, 29 Oct 2024 21:04:39 +0100 Subject: [PATCH] fix(middleware): order storages with configuration --- pkg/middleware/middleware.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pkg/middleware/middleware.go b/pkg/middleware/middleware.go index 4b4295d74..e1f9a371d 100644 --- a/pkg/middleware/middleware.go +++ b/pkg/middleware/middleware.go @@ -33,6 +33,23 @@ import ( "golang.org/x/sync/singleflight" ) +func reorderStorers(storers []types.Storer, expectedStorers []string) []types.Storer { + if len(expectedStorers) == 0 { + return storers + } + + newStorers := make([]types.Storer, 0) + for _, expectedStorer := range expectedStorers { + for _, storer := range storers { + if storer.Name() == strings.ToUpper(expectedStorer) { + newStorers = append(newStorers, storer) + } + } + } + + return newStorers +} + func NewHTTPCacheHandler(c configurationtypes.AbstractConfigurationInterface) *SouinBaseHandler { if c.GetLogger() == nil { var logLevel zapcore.Level @@ -75,12 +92,14 @@ func NewHTTPCacheHandler(c configurationtypes.AbstractConfigurationInterface) *S } } + storers = reorderStorers(storers, c.GetDefaultCache().GetStorers()) + if len(storers) > 0 { names := []string{} for _, storer := range storers { names = append(names, storer.Name()) } - c.GetLogger().Debugf("You're running Souin with the following storages %s", strings.Join(names, ", ")) + c.GetLogger().Debugf("You're running Souin with the following storages in this order %s", strings.Join(names, ", ")) } } if len(storers) == 0 {