From f79d785f6089f2445a4f9db24ca4fb80179ef5ea Mon Sep 17 00:00:00 2001 From: Deepak Bhatt Date: Wed, 6 Nov 2024 08:06:56 +0000 Subject: [PATCH] fix: [CDE-438]: modify filter logic for marked-for-deletion field (#2935) * modify delete api * modify filter logic for marked-for-deletion field --- app/api/controller/gitspace/list_all.go | 4 ++++ app/api/controller/space/list_gitspaces.go | 5 ++++- app/services/metric/metrics.go | 2 +- app/store/database/gitspace_config.go | 8 ++++---- types/gitspace.go | 14 +++++++------- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/api/controller/gitspace/list_all.go b/app/api/controller/gitspace/list_all.go index 63bcd5902..7f5da8e2e 100644 --- a/app/api/controller/gitspace/list_all.go +++ b/app/api/controller/gitspace/list_all.go @@ -32,8 +32,12 @@ func (c *Controller) ListAllGitspaces( // nolint:gocognit ctx context.Context, session *auth.Session, ) ([]*types.GitspaceConfig, error) { + deleted := false + markedForDeletion := false filter := &types.GitspaceFilter{ GitspaceInstanceFilter: types.GitspaceInstanceFilter{UserIdentifier: session.Principal.UID}, + Deleted: &deleted, + MarkedForDeletion: &markedForDeletion, } var result []*types.GitspaceConfig diff --git a/app/api/controller/space/list_gitspaces.go b/app/api/controller/space/list_gitspaces.go index 8bc8405df..6891d10f2 100644 --- a/app/api/controller/space/list_gitspaces.go +++ b/app/api/controller/space/list_gitspaces.go @@ -41,7 +41,10 @@ func (c *Controller) ListGitspaces( filter.UserIdentifier = session.Principal.UID filter.SpaceIDs = []int64{space.ID} - filter.IncludeMarkedForDeletion = false + deleted := false + markedForDeletion := false + filter.Deleted = &deleted + filter.MarkedForDeletion = &markedForDeletion return c.gitspaceSvc.ListGitspacesForSpace(ctx, space, filter) } diff --git a/app/services/metric/metrics.go b/app/services/metric/metrics.go index cbf390ba0..8b8bea915 100644 --- a/app/services/metric/metrics.go +++ b/app/services/metric/metrics.go @@ -139,7 +139,7 @@ func (c *Collector) Handle(ctx context.Context, _ string, _ job.ProgressReporter } // total gitspaces (configs) in the system - totalGitspaces, err := c.gitspaceConfigStore.Count(ctx, &types.GitspaceFilter{IncludeDeleted: true}) + totalGitspaces, err := c.gitspaceConfigStore.Count(ctx, &types.GitspaceFilter{}) if err != nil { return "", fmt.Errorf("failed to get gitspace count: %w", err) } diff --git a/app/store/database/gitspace_config.go b/app/store/database/gitspace_config.go index 5b84edf75..2e635a94e 100644 --- a/app/store/database/gitspace_config.go +++ b/app/store/database/gitspace_config.go @@ -311,16 +311,16 @@ func getLatestInstanceQuery() string { } func addGitspaceFilter(stmt squirrel.SelectBuilder, filter *types.GitspaceFilter) squirrel.SelectBuilder { - if !filter.IncludeDeleted { - stmt = stmt.Where(squirrel.Eq{"gconf_is_deleted": false}) + if filter.Deleted != nil { + stmt = stmt.Where(squirrel.Eq{"gconf_is_deleted": filter.Deleted}) } if filter.Owner == enum.GitspaceOwnerSelf && filter.UserIdentifier != "" { stmt = stmt.Where(squirrel.Eq{"gconf_user_uid": filter.UserIdentifier}) } - if !filter.IncludeMarkedForDeletion { - stmt = stmt.Where(squirrel.Eq{"gconf_is_marked_for_deletion": false}) + if filter.MarkedForDeletion != nil { + stmt = stmt.Where(squirrel.Eq{"gconf_is_marked_for_deletion": filter.MarkedForDeletion}) } if len(filter.SpaceIDs) > 0 { diff --git a/types/gitspace.go b/types/gitspace.go index 794d5e2e5..2aa2d6840 100644 --- a/types/gitspace.go +++ b/types/gitspace.go @@ -81,13 +81,13 @@ type GitspaceInstance struct { } type GitspaceFilter struct { - QueryFilter ListQueryFilter - Sort enum.GitspaceSort `json:"sort"` - Order enum.Order `json:"order"` - Owner enum.GitspaceOwner - GitspaceFilterStates []enum.GitspaceFilterState - IncludeDeleted bool - IncludeMarkedForDeletion bool + QueryFilter ListQueryFilter + Sort enum.GitspaceSort `json:"sort"` + Order enum.Order `json:"order"` + Owner enum.GitspaceOwner + GitspaceFilterStates []enum.GitspaceFilterState + Deleted *bool // not nil when we want to add this filter + MarkedForDeletion *bool // not nil when we want to add this filter GitspaceInstanceFilter }