From 2b3877a262135d7349adbb3f2af37645694f86ec Mon Sep 17 00:00:00 2001 From: SATYAsasini Date: Wed, 25 Jun 2025 17:26:46 +0530 Subject: [PATCH] fix: including app name in get all labels api and also introoduced optional query param --- .../app/appInfo/AppInfoRestHandler.go | 16 +++++++++++++++- .../pipelineConfig/AppLabelsRepository.go | 13 ++++++++++--- pkg/app/AppCrudOperationService.go | 7 ++++--- pkg/bean/app.go | 1 + wire_gen.go | 2 +- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/api/restHandler/app/appInfo/AppInfoRestHandler.go b/api/restHandler/app/appInfo/AppInfoRestHandler.go index d15c4c77b7..e6ba47a5a8 100644 --- a/api/restHandler/app/appInfo/AppInfoRestHandler.go +++ b/api/restHandler/app/appInfo/AppInfoRestHandler.go @@ -87,9 +87,23 @@ func (handler AppInfoRestHandlerImpl) GetAllLabels(w http.ResponseWriter, r *htt common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized) return } + propagatedLabelsOnlyStr := r.URL.Query().Get("showPropagatedOnly") + + var propagatedLabelsOnlyBool *bool + if propagatedLabelsOnlyStr != "" { + if val, err := strconv.ParseBool(propagatedLabelsOnlyStr); err == nil { + propagatedLabelsOnlyBool = &val + } else { + // Invalid boolean value provided, treat as null (nil) + propagatedLabelsOnlyBool = nil + handler.logger.Infow("Invalid 'showPropagatedOnly' value from quey params — defaulting to nil", propagatedLabelsOnlyStr) + } + } + token := r.Header.Get("token") results := make([]*bean.AppLabelDto, 0) - labels, err := handler.appService.FindAll() + + labels, err := handler.appService.FindAll(propagatedLabelsOnlyBool) if err != nil { handler.logger.Errorw("service err, GetAllLabels", "err", err) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) diff --git a/internal/sql/repository/pipelineConfig/AppLabelsRepository.go b/internal/sql/repository/pipelineConfig/AppLabelsRepository.go index 460323472a..7d67f73764 100644 --- a/internal/sql/repository/pipelineConfig/AppLabelsRepository.go +++ b/internal/sql/repository/pipelineConfig/AppLabelsRepository.go @@ -41,7 +41,7 @@ type AppLabelRepository interface { Delete(model *AppLabel, tx *pg.Tx) error FindById(id int) (*AppLabel, error) FindAllByIds(ids []int) ([]*AppLabel, error) - FindAll() ([]*AppLabel, error) + FindAll(propagated *bool) ([]*AppLabel, error) FindByLabelKey(key string) ([]*AppLabel, error) FindByAppIdAndKeyAndValue(appId int, key string, value string) (*AppLabel, error) FindByLabelValue(label string) ([]*AppLabel, error) @@ -89,9 +89,16 @@ func (impl AppLabelRepositoryImpl) FindAllByIds(ids []int) ([]*AppLabel, error) err := impl.dbConnection.Model(&models).Where("id in (?)", pg.In(ids)).Order("updated_on desc").Select() return models, err } -func (impl AppLabelRepositoryImpl) FindAll() ([]*AppLabel, error) { +func (impl AppLabelRepositoryImpl) FindAll(propagated *bool) ([]*AppLabel, error) { var models []*AppLabel - err := impl.dbConnection.Model(&models).Order("updated_on desc").Select() + query := impl.dbConnection.Model(&models). + Column("app_label.*", "App"). + Order("updated_on desc") + // if propagated flag is not set then show all labels + if propagated != nil { + query = query.Where("propagate = ?", *propagated) + } + err := query.Select() return models, err } func (impl AppLabelRepositoryImpl) FindByLabelKey(key string) ([]*AppLabel, error) { diff --git a/pkg/app/AppCrudOperationService.go b/pkg/app/AppCrudOperationService.go index 945e959ebf..f6fb2f40be 100644 --- a/pkg/app/AppCrudOperationService.go +++ b/pkg/app/AppCrudOperationService.go @@ -59,7 +59,7 @@ type CrudOperationServiceConfig struct { type AppCrudOperationService interface { Create(request *bean.AppLabelDto, tx *pg.Tx) (*bean.AppLabelDto, error) FindById(id int) (*bean.AppLabelDto, error) - FindAll() ([]*bean.AppLabelDto, error) + FindAll(propagated *bool) ([]*bean.AppLabelDto, error) GetAppMetaInfo(appId int, installedAppId int, envId int) (*bean.AppMetaInfoDto, error) GetHelmAppMetaInfo(appId string) (*bean.AppMetaInfoDto, error) GetAppLabelsForDeployment(ctx context.Context, appId int, appName, envName string) ([]byte, error) @@ -318,9 +318,9 @@ func (impl AppCrudOperationServiceImpl) FindById(id int) (*bean.AppLabelDto, err return label, nil } -func (impl AppCrudOperationServiceImpl) FindAll() ([]*bean.AppLabelDto, error) { +func (impl AppCrudOperationServiceImpl) FindAll(propagated *bool) ([]*bean.AppLabelDto, error) { results := make([]*bean.AppLabelDto, 0) - models, err := impl.appLabelRepository.FindAll() + models, err := impl.appLabelRepository.FindAll(propagated) if err != nil && err != pg.ErrNoRows { impl.logger.Errorw("error in fetching FindAll app labels", "error", err) return nil, err @@ -334,6 +334,7 @@ func (impl AppCrudOperationServiceImpl) FindAll() ([]*bean.AppLabelDto, error) { Key: model.Key, Value: model.Value, Propagate: model.Propagate, + AppName: model.App.AppName, } results = append(results, dto) } diff --git a/pkg/bean/app.go b/pkg/bean/app.go index 83c6717093..d43c370ea5 100644 --- a/pkg/bean/app.go +++ b/pkg/bean/app.go @@ -901,6 +901,7 @@ type AppLabelDto struct { Value string `json:"value,notnull"` Propagate bool `json:"propagate,notnull"` AppId int `json:"appId,omitempty"` + AppName string `json:"appName,omitempty"` UserId int32 `json:"-"` } diff --git a/wire_gen.go b/wire_gen.go index e8e7dbfa54..73a47fa56c 100644 --- a/wire_gen.go +++ b/wire_gen.go @@ -1,6 +1,6 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate go run github.com/google/wire/cmd/wire +//go:generate go run -mod=mod github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject