diff --git a/app/store/database/gitspace_config.go b/app/store/database/gitspace_config.go index e85ee452e..bce7ab09d 100644 --- a/app/store/database/gitspace_config.go +++ b/app/store/database/gitspace_config.go @@ -271,10 +271,23 @@ func mapToInternalGitspaceConfig(config *types.GitspaceConfig) *gitspaceConfig { func (s gitspaceConfigStore) List(ctx context.Context, filter *types.GitspaceFilter) ([]*types.GitspaceConfig, error) { stmt := database.Builder. Select(gitspaceConfigSelectColumns). - From(gitspaceConfigsTable). - Where(squirrel.Eq{"gconf_is_deleted": false}). - Where(squirrel.Eq{"gconf_user_uid": filter.UserID}). - Where(squirrel.Eq{"gconf_space_id": filter.SpaceIDs}) + From(gitspaceConfigsTable) + + if !filter.IncludeDeleted { + stmt = stmt.Where(squirrel.Eq{"gconf_is_deleted": false}) + } + + if filter.UserID != "" { + stmt = stmt.Where(squirrel.Eq{"gconf_user_uid": filter.UserID}) + } + + if len(filter.SpaceIDs) > 0 { + stmt = stmt.Where(squirrel.Eq{"gconf_space_id": filter.SpaceIDs}) + } + + if filter.IncludeMarkedForDeletion { + stmt = stmt.Where(squirrel.Eq{"gconf_is_marked_for_deletion": true}) + } queryFilter := filter.QueryFilter stmt = stmt.Limit(database.Limit(queryFilter.Size)) diff --git a/types/gitspace.go b/types/gitspace.go index bb7cf7f03..be222b818 100644 --- a/types/gitspace.go +++ b/types/gitspace.go @@ -80,12 +80,13 @@ type GitspaceInstance struct { } type GitspaceFilter struct { - QueryFilter ListQueryFilter - UserID string - LastUsedBefore int64 - LastHeartBeatBefore int64 - State []enum.GitspaceInstanceStateType - SpaceIDs []int64 - IncludeDeleted bool - Limit int + QueryFilter ListQueryFilter + UserID string + LastUsedBefore int64 + LastHeartBeatBefore int64 + State []enum.GitspaceInstanceStateType + SpaceIDs []int64 + IncludeDeleted bool + IncludeMarkedForDeletion bool + Limit int }