diff --git a/src/route-handlers/get-search-attributes/get-search-attributes.constants.ts b/src/route-handlers/get-search-attributes/get-search-attributes.constants.ts index 9f169f218..c0b40f5b0 100644 --- a/src/route-handlers/get-search-attributes/get-search-attributes.constants.ts +++ b/src/route-handlers/get-search-attributes/get-search-attributes.constants.ts @@ -1,7 +1,7 @@ /** * System attributes as defined by Cadence. * These are built-in attributes that are automatically indexed by the system. - * https://github.com/cadence-workflow/cadence/blob/b9e01ea9b881daff690434419b253d1d36fc486a/common/definition/indexedKeys.go#L92 + * https://github.com/cadence-workflow/cadence/blob/5c79d73b2bd31ae492c84d780b5b4fb7afdc2417/common/definition/indexedKeys.go#L94 */ export const SYSTEM_SEARCH_ATTRIBUTES: Set = new Set([ 'DomainID', @@ -17,4 +17,6 @@ export const SYSTEM_SEARCH_ATTRIBUTES: Set = new Set([ 'IsCron', 'NumClusters', 'UpdateTime', + 'ClusterAttributeScope', + 'ClusterAttributeName', ]); diff --git a/src/views/shared/workflows-header/workflows-query-input/helpers/__tests__/get-autocomplete-suggestions.test.ts b/src/views/shared/workflows-header/workflows-query-input/helpers/__tests__/get-autocomplete-suggestions.test.ts index 2b44b4fd0..4f4d05cbb 100644 --- a/src/views/shared/workflows-header/workflows-query-input/helpers/__tests__/get-autocomplete-suggestions.test.ts +++ b/src/views/shared/workflows-header/workflows-query-input/helpers/__tests__/get-autocomplete-suggestions.test.ts @@ -23,7 +23,12 @@ describe('getAutocompleteSuggestions', () => { const suggestionsAfterSpace = getAutocompleteSuggestions( 'WorkflowID = "test" AND c' ); - expect(suggestionsAfterSpace).toEqual(['CloseTime', 'CloseStatus']); + expect(suggestionsAfterSpace).toEqual([ + 'CloseTime', + 'ClusterAttributeScope', + 'ClusterAttributeName', + 'CloseStatus', + ]); }); it('suggests logical operators after a complete WorkflowID value', () => { @@ -67,6 +72,16 @@ describe('getAutocompleteSuggestions', () => { expect(suggestionsRunID).toEqual(['""']); }); + it('suggests empty quotes after ClusterAttributeScope', () => { + const suggestions = getAutocompleteSuggestions('ClusterAttributeScope ='); + expect(suggestions).toEqual(['""']); + }); + + it('suggests empty quotes after ClusterAttributeName', () => { + const suggestions = getAutocompleteSuggestions('ClusterAttributeName !='); + expect(suggestions).toEqual(['""']); + }); + it('suggests status values after CloseStatus', () => { const suggestions = getAutocompleteSuggestions('CloseStatus ='); expect(suggestions).toEqual(STATUSES); @@ -105,6 +120,12 @@ describe('getAutocompleteSuggestions', () => { expect(suggestionsCase).toContain('CloseTime'); }); + it('handles partial attribute matching for Cluster attributes', () => { + const suggestions = getAutocompleteSuggestions('Cluster'); + expect(suggestions).toContain('ClusterAttributeScope'); + expect(suggestions).toContain('ClusterAttributeName'); + }); + it('suggests logical operators after complete complex query', () => { const complexQuery = 'WorkflowID = "test" AND StartTime >= "2023-01-01T00:00:00Z"'; @@ -116,6 +137,11 @@ describe('getAutocompleteSuggestions', () => { const complexQuery = 'WorkflowID = "test" AND StartTime >= "2023-01-01T00:00:00Z" AND c'; const suggestions = getAutocompleteSuggestions(complexQuery); - expect(suggestions).toEqual(['CloseTime', 'CloseStatus']); + expect(suggestions).toEqual([ + 'CloseTime', + 'ClusterAttributeScope', + 'ClusterAttributeName', + 'CloseStatus', + ]); }); }); diff --git a/src/views/shared/workflows-header/workflows-query-input/workflows-query-input.constants.ts b/src/views/shared/workflows-header/workflows-query-input/workflows-query-input.constants.ts index 1267aa627..9c9e47c79 100644 --- a/src/views/shared/workflows-header/workflows-query-input/workflows-query-input.constants.ts +++ b/src/views/shared/workflows-header/workflows-query-input/workflows-query-input.constants.ts @@ -12,6 +12,8 @@ export const ID_ATTRIBUTES = [ 'RolloutID', 'RunID', 'TaskList', + 'ClusterAttributeScope', + 'ClusterAttributeName', ]; export const CLOSE_STATUS_ATTRIBUTE = 'CloseStatus';