Skip to content

Commit 38375c1

Browse files
feat(compass-field-store): makes FieldStorePlugin aware of multiple connections and remove dependency on events for updating the store COMPASS-7722 (#5644)
1 parent b7f4169 commit 38375c1

File tree

22 files changed

+517
-276
lines changed

22 files changed

+517
-276
lines changed

package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/compass-aggregations/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,6 @@ application can be listened to via [hadron-app-registry][hadron-app-registry].
206206

207207
- **'import-finished'**: When import data was successful, refresh plugin's input
208208
data.
209-
- **'fields-changed', fields**: Received when schema fields change. Updates
210-
plugin's fields.
211209
- **'refresh-data'**: Received when Compass data was refreshed. Refreshes input
212210
data in the plugin.
213211
- **'open-create-view', { meta: { source, pipeline }}**: Received when `Create View` is to be opened. Opens a Create View modal.

packages/compass-connections/src/provider.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { createServiceLocator } from 'hadron-app-registry';
33
import { useConnectionInfo } from '@mongodb-js/connection-storage/provider';
44

55
import type { DataService } from 'mongodb-data-service';
6-
import type { ConnectionsManager } from './connections-manager';
6+
import { ConnectionsManager } from './connections-manager';
7+
import { createNoopLoggerAndTelemetry } from '@mongodb-js/compass-logging/provider';
78

89
export type { DataService };
910
export * from './connections-manager';
@@ -19,9 +20,14 @@ export const useConnectionsManagerContext = (): ConnectionsManager => {
1920
const connectionsManager = useContext(ConnectionsManagerContext);
2021

2122
if (!connectionsManager) {
22-
throw new Error(
23-
'ConnectionsManager not available in context. Did you forget to setup ConnectionsManagerProvider'
24-
);
23+
if (process.env.NODE_ENV !== 'test') {
24+
throw new Error(
25+
'ConnectionsManager not available in context. Did you forget to setup ConnectionsManagerProvider'
26+
);
27+
}
28+
return new ConnectionsManager({
29+
logger: createNoopLoggerAndTelemetry().log.unbound,
30+
});
2531
}
2632
return connectionsManager;
2733
};

packages/compass-crud/README.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ application can be listened to via [hadron-app-registry][hadron-app-registry].
9797

9898
- **'document-view-changed', view**: indicates document view changed. `view` can
9999
be either `JSON`, `List`, or `Table`.
100-
- **'documents-paginated'**: indicates when pagination is complete. Called when
101-
calling the next or previous pages in pagination.
102-
- **'documents-refreshed'**: indicates documents were refreshed.
103100
- **'document-inserted'**: indicates documents were inserted. Called when
104101
`insertMany` and `insertOne` complete.
105102
- **'document-updated'**: indicates a document was updated.
@@ -109,9 +106,6 @@ application can be listened to via [hadron-app-registry][hadron-app-registry].
109106

110107
- **'document-view-changed', view**: indicates document view changed. `view` can
111108
be either `JSON`, `List`, or `Table`.
112-
- **'documents-paginated'**: indicates when pagination is complete. Called when
113-
calling the next or previous pages in pagination.
114-
- **'documents-refreshed'**: indicates documents were refreshed.
115109
- **'document-inserted'**: indicates documents were inserted. Called when
116110
`insertMany` and `insertOne` complete.
117111
- **'document-updated'**: indicates a document was updated.

packages/compass-crud/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
favoriteQueryStorageAccessLocator,
2222
recentQueryStorageAccessLocator,
2323
} from '@mongodb-js/my-queries-storage/provider';
24+
import { fieldStoreServiceLocator } from '@mongodb-js/compass-field-store';
2425

2526
export const CompassDocumentsHadronPlugin = registerHadronPlugin(
2627
{
@@ -38,6 +39,7 @@ export const CompassDocumentsHadronPlugin = registerHadronPlugin(
3839
logger: createLoggerAndTelemetryLocator('COMPASS-CRUD-UI'),
3940
favoriteQueryStorageAccess: favoriteQueryStorageAccessLocator,
4041
recentQueryStorageAccess: recentQueryStorageAccessLocator,
42+
fieldStoreService: fieldStoreServiceLocator,
4143
}
4244
);
4345

packages/compass-crud/src/stores/crud-store.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { satisfies } from 'semver';
2424
import type { PreferencesAccess } from 'compass-preferences-model';
2525
import { createSandboxFromDefaultPreferences } from 'compass-preferences-model';
2626
import { createNoopLoggerAndTelemetry } from '@mongodb-js/compass-logging/provider';
27+
import type { FieldStoreService } from '@mongodb-js/compass-field-store';
2728

2829
chai.use(chaiAsPromised);
2930

@@ -92,6 +93,11 @@ function waitForState(store, cb, timeout?: number) {
9293
return waitForStates(store, [cb], timeout);
9394
}
9495

96+
const mockFieldStoreService = {
97+
updateFieldsFromDocuments() {},
98+
updateFieldsFromSchema() {},
99+
} as unknown as FieldStoreService;
100+
95101
describe('store', function () {
96102
this.timeout(5000);
97103

@@ -190,6 +196,7 @@ describe('store', function () {
190196
logger: createNoopLoggerAndTelemetry(),
191197
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
192198
recentQueryStorageAccess: compassRecentQueryStorageAccess,
199+
fieldStoreService: mockFieldStoreService,
193200
},
194201
createActivateHelpers()
195202
);
@@ -291,6 +298,7 @@ describe('store', function () {
291298
logger: createNoopLoggerAndTelemetry(),
292299
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
293300
recentQueryStorageAccess: compassRecentQueryStorageAccess,
301+
fieldStoreService: mockFieldStoreService,
294302
},
295303
createActivateHelpers()
296304
);
@@ -348,6 +356,7 @@ describe('store', function () {
348356
logger: createNoopLoggerAndTelemetry(),
349357
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
350358
recentQueryStorageAccess: compassRecentQueryStorageAccess,
359+
fieldStoreService: mockFieldStoreService,
351360
},
352361
createActivateHelpers()
353362
);
@@ -398,6 +407,7 @@ describe('store', function () {
398407
logger: createNoopLoggerAndTelemetry(),
399408
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
400409
recentQueryStorageAccess: compassRecentQueryStorageAccess,
410+
fieldStoreService: mockFieldStoreService,
401411
},
402412
createActivateHelpers()
403413
);
@@ -447,6 +457,7 @@ describe('store', function () {
447457
logger: createNoopLoggerAndTelemetry(),
448458
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
449459
recentQueryStorageAccess: compassRecentQueryStorageAccess,
460+
fieldStoreService: mockFieldStoreService,
450461
},
451462
createActivateHelpers()
452463
);
@@ -564,6 +575,7 @@ describe('store', function () {
564575
logger: createNoopLoggerAndTelemetry(),
565576
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
566577
recentQueryStorageAccess: compassRecentQueryStorageAccess,
578+
fieldStoreService: mockFieldStoreService,
567579
},
568580
createActivateHelpers()
569581
);
@@ -850,6 +862,7 @@ describe('store', function () {
850862
logger: createNoopLoggerAndTelemetry(),
851863
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
852864
recentQueryStorageAccess: compassRecentQueryStorageAccess,
865+
fieldStoreService: mockFieldStoreService,
853866
},
854867
createActivateHelpers()
855868
);
@@ -959,6 +972,7 @@ describe('store', function () {
959972
logger: createNoopLoggerAndTelemetry(),
960973
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
961974
recentQueryStorageAccess: compassRecentQueryStorageAccess,
975+
fieldStoreService: mockFieldStoreService,
962976
},
963977
createActivateHelpers()
964978
);
@@ -998,6 +1012,7 @@ describe('store', function () {
9981012
logger: createNoopLoggerAndTelemetry(),
9991013
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
10001014
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1015+
fieldStoreService: mockFieldStoreService,
10011016
},
10021017
createActivateHelpers()
10031018
);
@@ -1081,6 +1096,7 @@ describe('store', function () {
10811096
logger: createNoopLoggerAndTelemetry(),
10821097
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
10831098
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1099+
fieldStoreService: mockFieldStoreService,
10841100
},
10851101
createActivateHelpers()
10861102
);
@@ -1242,6 +1258,7 @@ describe('store', function () {
12421258
logger: createNoopLoggerAndTelemetry(),
12431259
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
12441260
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1261+
fieldStoreService: mockFieldStoreService,
12451262
},
12461263
createActivateHelpers()
12471264
);
@@ -1417,6 +1434,7 @@ describe('store', function () {
14171434
logger: createNoopLoggerAndTelemetry(),
14181435
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
14191436
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1437+
fieldStoreService: mockFieldStoreService,
14201438
},
14211439
createActivateHelpers()
14221440
);
@@ -1592,6 +1610,7 @@ describe('store', function () {
15921610
logger: createNoopLoggerAndTelemetry(),
15931611
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
15941612
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1613+
fieldStoreService: mockFieldStoreService,
15951614
},
15961615
createActivateHelpers()
15971616
);
@@ -1779,6 +1798,7 @@ describe('store', function () {
17791798
logger: createNoopLoggerAndTelemetry(),
17801799
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
17811800
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1801+
fieldStoreService: mockFieldStoreService,
17821802
},
17831803
createActivateHelpers()
17841804
);
@@ -1824,6 +1844,7 @@ describe('store', function () {
18241844
logger: createNoopLoggerAndTelemetry(),
18251845
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
18261846
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1847+
fieldStoreService: mockFieldStoreService,
18271848
},
18281849
createActivateHelpers()
18291850
);
@@ -1866,6 +1887,7 @@ describe('store', function () {
18661887
logger: createNoopLoggerAndTelemetry(),
18671888
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
18681889
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1890+
fieldStoreService: mockFieldStoreService,
18691891
},
18701892
createActivateHelpers()
18711893
);
@@ -1906,6 +1928,7 @@ describe('store', function () {
19061928
logger: createNoopLoggerAndTelemetry(),
19071929
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
19081930
recentQueryStorageAccess: compassRecentQueryStorageAccess,
1931+
fieldStoreService: mockFieldStoreService,
19091932
},
19101933
createActivateHelpers()
19111934
);
@@ -1986,6 +2009,7 @@ describe('store', function () {
19862009
logger: createNoopLoggerAndTelemetry(),
19872010
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
19882011
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2012+
fieldStoreService: mockFieldStoreService,
19892013
},
19902014
createActivateHelpers()
19912015
);
@@ -2035,6 +2059,7 @@ describe('store', function () {
20352059
logger: createNoopLoggerAndTelemetry(),
20362060
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
20372061
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2062+
fieldStoreService: mockFieldStoreService,
20382063
},
20392064
createActivateHelpers()
20402065
);
@@ -2081,6 +2106,7 @@ describe('store', function () {
20812106
logger: createNoopLoggerAndTelemetry(),
20822107
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
20832108
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2109+
fieldStoreService: mockFieldStoreService,
20842110
},
20852111
createActivateHelpers()
20862112
);
@@ -2129,6 +2155,7 @@ describe('store', function () {
21292155
logger: createNoopLoggerAndTelemetry(),
21302156
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
21312157
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2158+
fieldStoreService: mockFieldStoreService,
21322159
},
21332160
createActivateHelpers()
21342161
);
@@ -2184,6 +2211,7 @@ describe('store', function () {
21842211
logger: createNoopLoggerAndTelemetry(),
21852212
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
21862213
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2214+
fieldStoreService: mockFieldStoreService,
21872215
},
21882216
createActivateHelpers()
21892217
);
@@ -2254,6 +2282,7 @@ describe('store', function () {
22542282
logger: createNoopLoggerAndTelemetry(),
22552283
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
22562284
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2285+
fieldStoreService: mockFieldStoreService,
22572286
},
22582287
createActivateHelpers()
22592288
);
@@ -2365,6 +2394,7 @@ describe('store', function () {
23652394
logger: createNoopLoggerAndTelemetry(),
23662395
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
23672396
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2397+
fieldStoreService: mockFieldStoreService,
23682398
},
23692399
createActivateHelpers()
23702400
);
@@ -2816,6 +2846,7 @@ describe('store', function () {
28162846
},
28172847
},
28182848
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2849+
fieldStoreService: mockFieldStoreService,
28192850
},
28202851
createActivateHelpers()
28212852
);
@@ -2875,6 +2906,7 @@ describe('store', function () {
28752906
logger: createNoopLoggerAndTelemetry(),
28762907
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
28772908
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2909+
fieldStoreService: mockFieldStoreService,
28782910
},
28792911
createActivateHelpers()
28802912
);
@@ -2964,6 +2996,7 @@ describe('store', function () {
29642996
logger: createNoopLoggerAndTelemetry(),
29652997
favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess,
29662998
recentQueryStorageAccess: compassRecentQueryStorageAccess,
2999+
fieldStoreService: mockFieldStoreService,
29673000
},
29683001
createActivateHelpers()
29693002
);
@@ -3029,6 +3062,7 @@ describe('store', function () {
30293062
return recentQueriesStorage;
30303063
},
30313064
},
3065+
fieldStoreService: mockFieldStoreService,
30323066
},
30333067
createActivateHelpers()
30343068
);

0 commit comments

Comments
 (0)