diff --git a/.changeset/early-items-design.md b/.changeset/early-items-design.md deleted file mode 100644 index 86bf82478..000000000 --- a/.changeset/early-items-design.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@hyperdx/common-utils": patch -"@hyperdx/app": patch ---- - -fix: json getKeyValues (useful for autocomplete) diff --git a/packages/app/src/hooks/__tests__/useAutoCompleteOptions.test.tsx b/packages/app/src/hooks/__tests__/useAutoCompleteOptions.test.tsx index 539746c2e..4c78e4f8c 100644 --- a/packages/app/src/hooks/__tests__/useAutoCompleteOptions.test.tsx +++ b/packages/app/src/hooks/__tests__/useAutoCompleteOptions.test.tsx @@ -4,7 +4,7 @@ import { renderHook } from '@testing-library/react'; import { LuceneLanguageFormatter } from '../../SearchInputV2'; import { useAutoCompleteOptions } from '../useAutoCompleteOptions'; -import { useAllFields, useGetKeyValues, useJsonColumns } from '../useMetadata'; +import { useAllFields, useGetKeyValues } from '../useMetadata'; if (!globalThis.structuredClone) { globalThis.structuredClone = (obj: any) => { @@ -17,7 +17,6 @@ jest.mock('../useMetadata', () => ({ ...jest.requireActual('../useMetadata.tsx'), useAllFields: jest.fn(), useGetKeyValues: jest.fn(), - useJsonColumns: jest.fn(), })); const luceneFormatter = new LuceneLanguageFormatter(); @@ -61,10 +60,6 @@ describe('useAutoCompleteOptions', () => { (useGetKeyValues as jest.Mock).mockReturnValue({ data: null, }); - - (useJsonColumns as jest.Mock).mockReturnValue({ - data: null, - }); }); it('should return field options with correct lucene formatting', () => { diff --git a/packages/app/src/hooks/useAutoCompleteOptions.tsx b/packages/app/src/hooks/useAutoCompleteOptions.tsx index 5a63a4ffb..b0a37a1a6 100644 --- a/packages/app/src/hooks/useAutoCompleteOptions.tsx +++ b/packages/app/src/hooks/useAutoCompleteOptions.tsx @@ -6,9 +6,8 @@ import { deduplicate2dArray, useAllFields, useGetKeyValues, - useJsonColumns, } from '@/hooks/useMetadata'; -import { mergePath, toArray } from '@/utils'; +import { toArray } from '@/utils'; export interface ILanguageFormatter { formatFieldValue: (f: Field) => string; @@ -72,21 +71,16 @@ export function useAutoCompleteOptions( setSearchField(null); } }, [searchField, setSearchField, value, formatter]); - const { data: jsonColumns } = useJsonColumns( - Array.isArray(tableConnections) - ? tableConnections[0] - : (tableConnections ?? { - tableName: '', - databaseName: '', - connectionId: '', - }), - ); const searchKeys = useMemo( () => - searchField && jsonColumns - ? [mergePath(searchField.path, jsonColumns)] + searchField + ? [ + searchField.path.length > 1 + ? `${searchField.path[0]}['${searchField.path[1]}']` + : searchField.path[0], + ] : [], - [searchField, jsonColumns], + [searchField], ); // hooks to get key values diff --git a/packages/app/src/hooks/useMetadata.tsx b/packages/app/src/hooks/useMetadata.tsx index f4134a8af..c398be295 100644 --- a/packages/app/src/hooks/useMetadata.tsx +++ b/packages/app/src/hooks/useMetadata.tsx @@ -48,7 +48,15 @@ export function useColumns( } export function useJsonColumns( - { databaseName, tableName, connectionId }: TableConnection, + { + databaseName, + tableName, + connectionId, + }: { + databaseName: string; + tableName: string; + connectionId: string; + }, options?: Partial>, ) { return useQuery({ diff --git a/packages/common-utils/src/metadata.ts b/packages/common-utils/src/metadata.ts index a0d6f3f90..44e01e2b1 100644 --- a/packages/common-utils/src/metadata.ts +++ b/packages/common-utils/src/metadata.ts @@ -357,7 +357,10 @@ export class Metadata { ); } keys.push({ - key: key, + key: key + .split('.') + .map(v => `\`${v}\``) + .join('.'), chType: typeArr[0], }); }