Skip to content

Commit 38d3165

Browse files
committed
pr suggestions
1 parent 9102096 commit 38d3165

File tree

11 files changed

+36
-72
lines changed

11 files changed

+36
-72
lines changed

package-lock.json

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

packages/compass-data-modeling/src/services/data-model-storage-electron.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class DataModelStorageElectron implements DataModelStorage {
2424
async loadAll(): Promise<MongoDBDataModelDescription[]> {
2525
try {
2626
const res = await this.userData.readAll();
27-
return res.data as MongoDBDataModelDescription[];
27+
return res.data;
2828
} catch (err) {
2929
return [];
3030
}

packages/compass-data-modeling/src/services/data-model-storage.ts

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ export const StaticModelSchema = z.object({
2121
collections: z.array(
2222
z.object({
2323
ns: z.string(),
24-
jsonSchema: z.unknown(), // skipped for simplicity
24+
jsonSchema: z.custom<MongoDBJSONSchema>((value) => {
25+
const isObject = typeof value === 'object' && value !== null;
26+
return isObject && 'bsonType' in value;
27+
}),
2528
indexes: z.array(z.record(z.unknown())),
2629
shardKey: z.record(z.unknown()).optional(),
2730
displayPosition: z.tuple([z.number(), z.number()]),
@@ -30,49 +33,31 @@ export const StaticModelSchema = z.object({
3033
relationships: z.array(RelationshipSchema),
3134
});
3235

33-
export type StaticModel = Omit<
34-
z.output<typeof StaticModelSchema>,
35-
'collections'
36-
> & {
37-
collections: Array<
38-
Omit<
39-
z.output<typeof StaticModelSchema>['collections'][number],
40-
'jsonSchema'
41-
> & {
42-
jsonSchema: MongoDBJSONSchema;
43-
}
44-
>;
45-
};
36+
export type StaticModel = z.output<typeof StaticModelSchema>;
37+
38+
const EditSchemaBase = z.object({
39+
id: z.string().uuid(),
40+
timestamp: z.string().datetime(),
41+
});
4642

47-
export const EditSchema = z.discriminatedUnion('type', [
43+
const EditSchemaVariants = z.discriminatedUnion('type', [
4844
z.object({
4945
type: z.literal('SetModel'),
50-
id: z.string(),
51-
timestamp: z.string(),
5246
model: StaticModelSchema,
5347
}),
5448
z.object({
5549
type: z.literal('AddRelationship'),
56-
id: z.string(),
57-
timestamp: z.string(),
5850
relationship: RelationshipSchema,
5951
}),
6052
z.object({
6153
type: z.literal('RemoveRelationship'),
62-
id: z.string(),
63-
timestamp: z.string(),
64-
relationshipId: z.string(),
54+
relationshipId: z.string().uuid(),
6555
}),
6656
]);
6757

68-
type BaseEdit = z.output<typeof EditSchema>;
69-
type SetModelEdit = Omit<Extract<BaseEdit, { type: 'SetModel' }>, 'model'> & {
70-
model: StaticModel;
71-
};
58+
export const EditSchema = z.intersection(EditSchemaBase, EditSchemaVariants);
7259

73-
export type Edit =
74-
| SetModelEdit
75-
| Extract<BaseEdit, { type: 'AddRelationship' | 'RemoveRelationship' }>;
60+
export type Edit = z.output<typeof EditSchema>;
7661

7762
export const validateEdit = (
7863
edit: unknown
@@ -106,12 +91,9 @@ export const MongoDBDataModelDescriptionSchema = z.object({
10691
edits: z.array(EditSchema).default([]),
10792
});
10893

109-
export type MongoDBDataModelDescription = Omit<
110-
z.output<typeof MongoDBDataModelDescriptionSchema>,
111-
'edits'
112-
> & {
113-
edits: Array<Edit>;
114-
};
94+
export type MongoDBDataModelDescription = z.output<
95+
typeof MongoDBDataModelDescriptionSchema
96+
>;
11597

11698
export interface DataModelStorage {
11799
save(description: MongoDBDataModelDescription): Promise<boolean>;

packages/compass-preferences-model/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@
5959
"js-yaml": "^4.1.0",
6060
"lodash": "^4.17.21",
6161
"react": "^17.0.2",
62-
"yargs-parser": "^21.1.1",
63-
"zod": "^3.24.4"
62+
"yargs-parser": "^21.1.1"
6463
},
6564
"devDependencies": {
6665
"@mongodb-js/eslint-config-compass": "^1.3.8",

packages/compass-preferences-model/src/global-config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import yargsParser from 'yargs-parser';
77
import { kebabCase } from 'lodash';
88
import type { AllPreferences } from './preferences-schema';
99
import { allPreferencesProps } from './preferences-schema';
10-
import type { z } from 'zod';
10+
import type { z } from '@mongodb-js/compass-user-data';
1111

1212
import { createLogger } from '@mongodb-js/compass-logging';
1313
const { log, mongoLogId } = createLogger('COMPASS-PREFERENCES');

packages/compass-preferences-model/src/preferences-persistent-storage.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import type { z } from 'zod';
2-
import { UserData } from '@mongodb-js/compass-user-data';
1+
import { type z, UserData } from '@mongodb-js/compass-user-data';
32
import {
43
getDefaultsForStoredPreferences,
54
getPreferencesValidator,

packages/compass-preferences-model/src/preferences-schema.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react';
2-
import { z } from 'zod';
2+
import { z } from '@mongodb-js/compass-user-data';
33
import {
44
type FeatureFlagDefinition,
55
type FeatureFlags,

packages/compass-preferences-model/src/preferences.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { z } from 'zod';
1+
import { z } from '@mongodb-js/compass-user-data';
22
import { type Logger } from '@mongodb-js/compass-logging';
33

44
import type { ParsedGlobalPreferencesResult } from './global-config';

packages/compass-preferences-model/src/user-storage.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { z } from 'zod';
1+
import { z } from '@mongodb-js/compass-user-data';
22
import { expect } from 'chai';
33
import os from 'os';
44
import path from 'path';

packages/compass-preferences-model/src/user-storage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { z } from 'zod';
1+
import { z } from '@mongodb-js/compass-user-data';
22
import { UUID } from 'bson';
33
import { UserData } from '@mongodb-js/compass-user-data';
44

0 commit comments

Comments
 (0)