Skip to content

Commit

Permalink
feat: made FieldStore aware of multi connections
Browse files Browse the repository at this point in the history
- Start using ConnectionScopedGlobalAppRegistry in the plugins to emit
  event on GlobalAppRegistry with the connectionInfo
- FieldStorePlugin now expect ConnectionInfo to be provided when
  listening for events on GlobalAppRegistry
- Test cases are changed to add provider for ConnectionInfo
  • Loading branch information
himanshusinghs committed Mar 27, 2024
1 parent a563aa2 commit 5b3fca5
Show file tree
Hide file tree
Showing 43 changed files with 668 additions and 294 deletions.
12 changes: 12 additions & 0 deletions package-lock.json

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

1 change: 1 addition & 0 deletions packages/compass-aggregations/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
"@mongodb-js/compass-logging": "^1.2.14",
"@mongodb-js/compass-utils": "^0.6.1",
"@mongodb-js/compass-workspaces": "^0.5.1",
"@mongodb-js/connection-storage": "^0.8.1",
"@mongodb-js/explain-plan-helper": "^1.1.10",
"@mongodb-js/mongodb-constants": "^0.9.0",
"@mongodb-js/my-queries-storage": "^0.5.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,28 @@ import { Provider } from 'react-redux';

import configureStore from '../../../test/configure-store';
import { FocusModeStageEditor } from './focus-mode-stage-editor';
import { ConnectionInfoProvider } from '@mongodb-js/connection-storage/provider';

const renderFocusModeStageEditor = (
props: Partial<ComponentProps<typeof FocusModeStageEditor>> = {}
) => {
render(
<Provider
store={configureStore({
pipeline: [{ $match: { _id: 1 } }, { $limit: 10 }, { $out: 'out' }],
})}
<ConnectionInfoProvider
value={{
id: '1234',
connectionOptions: {
connectionString: 'mongodb://webscales.com:27017',
},
}}
>
<FocusModeStageEditor index={-1} operator={null} {...props} />
</Provider>
<Provider
store={configureStore({
pipeline: [{ $match: { _id: 1 } }, { $limit: 10 }, { $out: 'out' }],
})}
>
<FocusModeStageEditor index={-1} operator={null} {...props} />
</Provider>
</ConnectionInfoProvider>
);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,25 @@ import { Provider } from 'react-redux';
import configureStore from '../../../test/configure-store';
import FocusMode from './focus-mode';
import { disableFocusMode, enableFocusMode } from '../../modules/focus-mode';
import { ConnectionInfoProvider } from '@mongodb-js/connection-storage/provider';

const renderFocusMode = () => {
const store = configureStore({
pipeline: [{ $match: { _id: 1 } }, { $limit: 10 }, { $out: 'out' }],
});
render(
<Provider store={store}>
<FocusMode />
</Provider>
<ConnectionInfoProvider
value={{
id: '1234',
connectionOptions: {
connectionString: 'mongodb://webscales.com:27017',
},
}}
>
<Provider store={store}>
<FocusMode />
</Provider>
</ConnectionInfoProvider>
);
return store;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,25 @@ import { expect } from 'chai';
import configureStore from '../../../test/configure-store';
import { PipelineBuilderWorkspace } from '.';
import { toggleSidePanel } from '../../modules/side-panel';
import { ConnectionInfoProvider } from '@mongodb-js/connection-storage/provider';

const renderBuilderWorkspace = (
props: Partial<ComponentProps<typeof PipelineBuilderWorkspace>> = {}
) => {
const store = configureStore();
render(
<Provider store={store}>
<PipelineBuilderWorkspace pipelineMode="as-text" {...props} />
</Provider>
<ConnectionInfoProvider
value={{
id: '1234',
connectionOptions: {
connectionString: 'mongodb://webscales.com:27017',
},
}}
>
<Provider store={store}>
<PipelineBuilderWorkspace pipelineMode="as-text" {...props} />
</Provider>
</ConnectionInfoProvider>
);
return store;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,24 @@ import { Provider } from 'react-redux';
import configureStore from '../../../../test/configure-store';

import { PipelineAsTextWorkspace } from '.';
import { ConnectionInfoProvider } from '@mongodb-js/connection-storage/provider';

const renderPipelineAsTextWorkspace = (
props: Partial<ComponentProps<typeof PipelineAsTextWorkspace>> = {}
) => {
render(
<Provider store={configureStore()}>
<PipelineAsTextWorkspace isAutoPreview={true} {...props} />
</Provider>
<ConnectionInfoProvider
value={{
id: '1234',
connectionOptions: {
connectionString: 'mongodb://webscales.com:27017',
},
}}
>
<Provider store={configureStore()}>
<PipelineAsTextWorkspace isAutoPreview={true} {...props} />
</Provider>
</ConnectionInfoProvider>
);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,33 @@ import configureStore from '../../../../test/configure-store';

import { PipelineEditor } from './pipeline-editor';
import { PipelineParserError } from '../../../modules/pipeline-builder/pipeline-parser/utils';
import { ConnectionInfoProvider } from '@mongodb-js/connection-storage/provider';

const renderPipelineEditor = (
props: Partial<ComponentProps<typeof PipelineEditor>> = {}
) => {
render(
<Provider store={configureStore()}>
<PipelineEditor
namespace="test.test"
pipelineText="[{$match: {}}]"
syntaxErrors={[]}
serverError={null}
serverVersion="4.2"
onChangePipelineText={() => {}}
num_stages={1}
{...props}
/>
</Provider>
<ConnectionInfoProvider
value={{
id: '1234',
connectionOptions: {
connectionString: 'mongodb://webscales.com:27017',
},
}}
>
<Provider store={configureStore()}>
<PipelineEditor
namespace="test.test"
pipelineText="[{$match: {}}]"
syntaxErrors={[]}
serverError={null}
serverVersion="4.2"
onChangePipelineText={() => {}}
num_stages={1}
{...props}
/>
</Provider>
</ConnectionInfoProvider>
);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { changeEditorValue } from '../../../modules/pipeline-builder/text-editor
import type { PipelineParserError } from '../../../modules/pipeline-builder/pipeline-parser/utils';
import { useLoggerAndTelemetry } from '@mongodb-js/compass-logging/provider';
import { useAutocompleteFields } from '@mongodb-js/compass-field-store';
import { useConnectionInfo } from '@mongodb-js/connection-storage/provider';

const containerStyles = css({
position: 'relative',
Expand Down Expand Up @@ -78,7 +79,8 @@ export const PipelineEditor: React.FunctionComponent<PipelineEditorProps> = ({
serverVersion,
onChangePipelineText,
}) => {
const fields = useAutocompleteFields(namespace);
const connectionInfo = useConnectionInfo();
const fields = useAutocompleteFields(connectionInfo, namespace);
const { track } = useLoggerAndTelemetry('COMPASS-AGGREGATIONS-UI');
const editorInitialValueRef = useRef<string>(pipelineText);
const editorCurrentValueRef = useRef<string>(pipelineText);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { expect } from 'chai';
import { Provider } from 'react-redux';
import configureStore from '../../../../test/configure-store';
import PipelineBuilderUIWorkspace from '.';
import { ConnectionInfoProvider } from '@mongodb-js/connection-storage/provider';

const SOURCE_PIPELINE = [
{ $match: { _id: 1 } },
Expand All @@ -13,14 +14,23 @@ const SOURCE_PIPELINE = [

const renderPipelineBuilderUIWorkspace = (props = {}, options = {}) => {
render(
<Provider
store={configureStore({
pipeline: SOURCE_PIPELINE,
...options,
})}
<ConnectionInfoProvider
value={{
id: '1234',
connectionOptions: {
connectionString: 'mongodb://webscales.com:27017',
},
}}
>
<PipelineBuilderUIWorkspace {...props} />
</Provider>
<Provider
store={configureStore({
pipeline: SOURCE_PIPELINE,
...options,
})}
>
<PipelineBuilderUIWorkspace {...props} />
</Provider>
</ConnectionInfoProvider>
);
};

Expand Down
Loading

0 comments on commit 5b3fca5

Please sign in to comment.