Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move search strategy registry to runtime contract. #7

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions src/legacy/core_plugins/data/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/

// /// Define plugin function
import { DataPlugin as Plugin, DataStart } from './plugin';
import { DataPlugin as Plugin, DataSetup, DataStart } from './plugin';

export function plugin() {
return new Plugin();
Expand All @@ -27,12 +27,23 @@ export function plugin() {
// /// Export types & static code

/** @public types */
export { DataStart };
export { DataSetup, DataStart };

export { Field, FieldType, IFieldList, IndexPattern } from './index_patterns';
export { SavedQuery, SavedQueryTimeFilter } from '../../../../plugins/data/public';
export { EsQuerySortValue, FetchOptions, ISearchSource, SortDirection } from './search/types';
export { SearchSourceFields } from './search/types';
export {
SavedQueryAttributes,
SavedQuery,
SavedQueryTimeFilter,
} from '../../../../plugins/data/public';

/** @public static code */
export * from '../common';
export { FilterStateManager } from './filter/filter_manager';
export { getFromSavedObject, getRoutes, flattenHitWrapper } from './index_patterns';
export {
defaultSearchStrategy,
getRequestInspectorStats,
getResponseInspectorStats,
} from './search';
47 changes: 39 additions & 8 deletions src/legacy/core_plugins/data/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,38 @@
*/

import { CoreSetup, CoreStart, Plugin } from 'kibana/public';
import { SearchService, SearchSetup, SearchStart } from './search';
import { DataPublicPluginStart } from '../../../../plugins/data/public';

// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { setFieldFormats } from '../../../../plugins/data/public/services';
import {
setFieldFormats,
setNotifications,
setIndexPatterns,
setQueryService,
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
} from '../../../../plugins/data/public/services';

export interface DataPluginStartDependencies {
data: DataPublicPluginStart;
}

/**
* Interface for this plugin's returned `setup` contract.
*
* @public
*/
export interface DataSetup {
search: SearchSetup;
}

/**
* Interface for this plugin's returned `start` contract.
*
* @public
*/
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface DataStart {}
export interface DataStart {
search: SearchStart;
}

/**
* Data Plugin - public
Expand All @@ -47,14 +63,29 @@ export interface DataStart {}
* or static code.
*/

export class DataPlugin implements Plugin<void, DataStart, {}, DataPluginStartDependencies> {
public setup(core: CoreSetup) {}
export class DataPlugin implements Plugin<DataSetup, DataStart, {}, DataPluginStartDependencies> {
private readonly search = new SearchService();

public setup(core: CoreSetup): DataSetup {
return {
search: this.search.setup(core),
};
}

public start(core: CoreStart, { data }: DataPluginStartDependencies): DataStart {
// This is required for when Angular code uses Field and FieldList.
setFieldFormats(data.fieldFormats);
return {};
setQueryService(data.query);
setIndexPatterns(data.indexPatterns);
setFieldFormats(data.fieldFormats);
setNotifications(core.notifications);

return {
search: this.search.start(core),
};
}

public stop() {}
public stop() {
this.search.stop();
}
}
30 changes: 11 additions & 19 deletions src/legacy/core_plugins/data/public/search/expressions/esaggs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,43 +21,37 @@ import { get, has } from 'lodash';
import { i18n } from '@kbn/i18n';
import { AggConfigs } from 'ui/agg_types/agg_configs';
import { createFormat } from 'ui/visualize/loader/pipeline_helpers/utilities';
import chrome from 'ui/chrome';
import { Query, TimeRange, esFilters } from 'src/plugins/data/public';
import { Query, TimeRange, esFilters, getTime, FilterManager } from 'src/plugins/data/public';
import {
KibanaContext,
KibanaDatatable,
ExpressionFunction,
KibanaDatatableColumn,
} from 'src/plugins/expressions/public';
import { npStart } from 'ui/new_platform';
import {
SearchSource,
SearchSourceContract,
ISearchSource,
getRequestInspectorStats,
getResponseInspectorStats,
} from '../../../../../ui/public/courier';
// @ts-ignore
import {
FilterBarQueryFilterProvider,
QueryFilter,
} from '../../../../../ui/public/filter_manager/query_filter';

import { buildTabularInspectorData } from '../../../../../ui/public/inspector/build_tabular_inspector_data';
import { calculateObjectHash } from '../../../../visualizations/public';
import { getTime } from '../../../../../ui/public/timefilter';
// @ts-ignore
import { tabifyAggResponse } from '../../../../../ui/public/agg_response/tabify/tabify';
import { PersistedState } from '../../../../../ui/public/persisted_state';
import { Adapters } from '../../../../../../plugins/inspector/public';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { getQueryService, getIndexPatterns } from '../../../../../../plugins/data/public/services';

export interface RequestHandlerParams {
searchSource: SearchSourceContract;
searchSource: ISearchSource;
aggs: AggConfigs;
timeRange?: TimeRange;
query?: Query;
filters?: esFilters.Filter[];
forceFetch: boolean;
queryFilter: QueryFilter;
filterManager: FilterManager;
uiState?: PersistedState;
partialRows?: boolean;
inspectorAdapters: Adapters;
Expand Down Expand Up @@ -90,7 +84,7 @@ const handleCourierRequest = async ({
partialRows,
metricsAtAllLevels,
inspectorAdapters,
queryFilter,
filterManager,
abortSignal,
}: RequestHandlerParams) => {
// Create a new search source that inherits the original search source
Expand Down Expand Up @@ -216,7 +210,7 @@ const handleCourierRequest = async ({
}

inspectorAdapters.data.setTabularLoader(
() => buildTabularInspectorData((searchSource as any).tabifiedResponse, queryFilter),
() => buildTabularInspectorData((searchSource as any).tabifiedResponse, filterManager),
{ returnsFormattedValues: true }
);

Expand Down Expand Up @@ -259,10 +253,8 @@ export const esaggs = (): ExpressionFunction<typeof name, Context, Arguments, Re
},
},
async fn(context, args, { inspectorAdapters, abortSignal }) {
const $injector = await chrome.dangerouslyGetActiveInjector();
const Private: Function = $injector.get('Private');
const { indexPatterns } = npStart.plugins.data;
const queryFilter = Private(FilterBarQueryFilterProvider);
const indexPatterns = getIndexPatterns();
const { filterManager } = getQueryService();

const aggConfigsState = JSON.parse(args.aggConfigs);
const indexPattern = await indexPatterns.get(args.index);
Expand All @@ -283,7 +275,7 @@ export const esaggs = (): ExpressionFunction<typeof name, Context, Arguments, Re
metricsAtAllLevels: args.metricsAtAllLevels,
partialRows: args.partialRows,
inspectorAdapters,
queryFilter,
filterManager,
abortSignal: (abortSignal as unknown) as AbortSignal,
});

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import React from 'react';
import { EuiCodeBlock, EuiDescriptionList, EuiSpacer } from '@elastic/eui';
import { ShardFailure } from './shard_failure_types';
import { getFlattenedObject } from '../../../../../../legacy/utils/get_flattened_object';
import { getFlattenedObject } from '../../../../../../../legacy/utils/get_flattened_object';
import { ShardFailureDescriptionHeader } from './shard_failure_description_header';

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export function getFailureSummaryText(failure: ShardFailure, failureDetails?: st
const displayDetails =
typeof failureDetails === 'string' ? failureDetails : getFailureSummaryDetailsText(failure);

return i18n.translate('common.ui.courier.fetch.shardsFailedModal.failureHeader', {
return i18n.translate('data.search.searchSource.fetch.shardsFailedModal.failureHeader', {
defaultMessage: '{failureName} at {failureDetails}',
values: { failureName, failureDetails: displayDetails },
description: 'Summary of shard failures, e.g. "IllegalArgumentException at shard 0 node xyz"',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,18 @@ export function ShardFailureModal({ request, response, title, onClose }: Props)
const tabs = [
{
id: 'table',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tabHeaderShardFailures', {
defaultMessage: 'Shard failures',
description: 'Name of the tab displaying shard failures',
}),
name: i18n.translate(
'data.search.searchSource.fetch.shardsFailedModal.tabHeaderShardFailures',
{
defaultMessage: 'Shard failures',
description: 'Name of the tab displaying shard failures',
}
),
content: <ShardFailureTable failures={failures} />,
},
{
id: 'json-request',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tabHeaderRequest', {
name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tabHeaderRequest', {
defaultMessage: 'Request',
description: 'Name of the tab displaying the JSON request',
}),
Expand All @@ -79,7 +82,7 @@ export function ShardFailureModal({ request, response, title, onClose }: Props)
},
{
id: 'json-response',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tabHeaderResponse', {
name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tabHeaderResponse', {
defaultMessage: 'Response',
description: 'Name of the tab displaying the JSON response',
}),
Expand All @@ -104,15 +107,15 @@ export function ShardFailureModal({ request, response, title, onClose }: Props)
{copy => (
<EuiButtonEmpty onClick={copy}>
<FormattedMessage
id="common.ui.courier.fetch.shardsFailedModal.copyToClipboard"
id="data.search.searchSource.fetch.shardsFailedModal.copyToClipboard"
defaultMessage="Copy response to clipboard"
/>
</EuiButtonEmpty>
)}
</EuiCopy>
<EuiButton onClick={() => onClose()} fill data-test-sub="closeShardFailureModal">
<FormattedMessage
id="common.ui.courier.fetch.shardsFailedModal.close"
id="data.search.searchSource.fetch.shardsFailedModal.close"
defaultMessage="Close"
description="Closing the Modal"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/

// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { setOverlays } from '../../../../../../../plugins/data/public/services';
import { OverlayStart } from 'kibana/public';

export const openModal = jest.fn();

jest.doMock('ui/new_platform', () => {
return {
npStart: {
core: {
overlays: {
openModal,
},
},
},
};
});
setOverlays(({
openModal,
} as unknown) as OverlayStart);
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
* under the License.
*/
import React from 'react';
// @ts-ignore
import { npStart } from 'ui/new_platform';
import { FormattedMessage } from '@kbn/i18n/react';
import { EuiButton, EuiTextAlign } from '@elastic/eui';

import { toMountPoint } from '../../../../../../plugins/kibana_react/public';
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
import { getOverlays } from '../../../../../../../plugins/data/public/services';
import { toMountPoint } from '../../../../../../../plugins/kibana_react/public';
import { ShardFailureModal } from './shard_failure_modal';
import { ResponseWithShardFailure, Request } from './shard_failure_types';

Expand All @@ -34,7 +34,7 @@ interface Props {

export function ShardFailureOpenModalButton({ request, response, title }: Props) {
function onClick() {
const modal = npStart.core.overlays.openModal(
const modal = getOverlays().openModal(
toMountPoint(
<ShardFailureModal
request={request}
Expand All @@ -57,7 +57,7 @@ export function ShardFailureOpenModalButton({ request, response, title }: Props)
data-test-subj="openShardFailureModalBtn"
>
<FormattedMessage
id="common.ui.courier.fetch.shardsFailedModal.showDetails"
id="data.search.searchSource.fetch.shardsFailedModal.showDetails"
defaultMessage="Show details"
description="Open the modal to show details"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export function ShardFailureTable({ failures }: { failures: ShardFailure[] }) {
render: (item: ListItem) => {
const failureSummeryText = getFailureSummaryText(item);
const collapseLabel = i18n.translate(
'common.ui.courier.fetch.shardsFailedModal.tableRowCollapse',
'data.search.searchSource.fetch.shardsFailedModal.tableRowCollapse',
{
defaultMessage: 'Collapse {rowDescription}',
description: 'Collapse a row of a table with failures',
Expand All @@ -53,7 +53,7 @@ export function ShardFailureTable({ failures }: { failures: ShardFailure[] }) {
);

const expandLabel = i18n.translate(
'common.ui.courier.fetch.shardsFailedModal.tableRowExpand',
'data.search.searchSource.fetch.shardsFailedModal.tableRowExpand',
{
defaultMessage: 'Expand {rowDescription}',
description: 'Expand a row of a table with failures',
Expand Down Expand Up @@ -81,7 +81,7 @@ export function ShardFailureTable({ failures }: { failures: ShardFailure[] }) {
},
{
field: 'shard',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tableColShard', {
name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColShard', {
defaultMessage: 'Shard',
}),
sortable: true,
Expand All @@ -90,23 +90,23 @@ export function ShardFailureTable({ failures }: { failures: ShardFailure[] }) {
},
{
field: 'index',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tableColIndex', {
name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColIndex', {
defaultMessage: 'Index',
}),
sortable: true,
truncateText: true,
},
{
field: 'node',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tableColNode', {
name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColNode', {
defaultMessage: 'Node',
}),
sortable: true,
truncateText: true,
},
{
field: 'reason.type',
name: i18n.translate('common.ui.courier.fetch.shardsFailedModal.tableColReason', {
name: i18n.translate('data.search.searchSource.fetch.shardsFailedModal.tableColReason', {
defaultMessage: 'Reason',
}),
truncateText: true,
Expand Down
Loading