Skip to content

Commit a8e4af2

Browse files
committed
Merge branch 'master' into alpha
2 parents 091e3d2 + 4f08750 commit a8e4af2

File tree

4 files changed

+50
-4
lines changed

4 files changed

+50
-4
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"typescript": "4.0.2"
6161
},
6262
"scripts": {
63+
"prepare": "tsc -p ./tsconfig.build.json",
6364
"build": "rimraf lib && tsc -p ./tsconfig.build.json",
6465
"watch": "jest --watch",
6566
"coverage": "jest --coverage --maxWorkers 4",

src/resolvers/helpers/__tests__/aliases-test.ts

+38
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,43 @@ describe('Resolver helper `alises` ->', () => {
2525
const aliases = prepareAliases(User);
2626
expect(aliases).toEqual(false);
2727
});
28+
29+
it('should extract field aliases from discriminator Models', () => {
30+
const UserSchema = new mongoose.Schema({
31+
e: {
32+
type: String,
33+
alias: 'emailAddress',
34+
},
35+
});
36+
const User = mongoose.model('User111', UserSchema);
37+
const VIPUserSchema = new mongoose.Schema({
38+
f: {
39+
type: Number,
40+
alias: 'freeDrinks',
41+
},
42+
});
43+
User.discriminator('VIPUser111', VIPUserSchema);
44+
const aliases = prepareAliases(User);
45+
expect(aliases).toEqual({ emailAddress: 'e', freeDrinks: 'f' });
46+
});
47+
48+
it('should extract field aliases in discriminator Models inherited from base Model', () => {
49+
const UserSchema = new mongoose.Schema({
50+
e: {
51+
type: String,
52+
alias: 'emailAddress',
53+
},
54+
});
55+
const User = mongoose.model('User789', UserSchema);
56+
const VIPUserSchema = new mongoose.Schema({
57+
f: {
58+
type: Number,
59+
alias: 'freeDrinks',
60+
},
61+
});
62+
const VIPUser = User.discriminator('VIPUser789', VIPUserSchema);
63+
const aliases = prepareAliases(VIPUser);
64+
expect(aliases).toEqual({ emailAddress: 'e', freeDrinks: 'f' });
65+
});
2866
});
2967
});

src/resolvers/helpers/aliases.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@ import type { Model } from 'mongoose';
33
export type AliasesMap = Record<string, string>;
44

55
export function prepareAliases(model: Model<any>): AliasesMap | false {
6-
const aliases = (model?.schema as any)?.aliases;
6+
const aliases = (model?.schema as any)?.aliases || {};
7+
8+
if (model.discriminators) {
9+
Object.keys(model.discriminators).forEach((subModelName: string) => {
10+
const submodel: Model<any> = (model.discriminators as any)[subModelName];
11+
Object.assign(aliases, (submodel?.schema as any)?.aliases);
12+
});
13+
}
714
if (Object.keys(aliases).length > 0) {
815
return aliases;
916
}

yarn.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -5201,9 +5201,9 @@ node-fetch-npm@^2.0.2:
52015201
safe-buffer "^5.1.1"
52025202

52035203
node-fetch@^2.3.0:
5204-
version "2.6.0"
5205-
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
5206-
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
5204+
version "2.6.1"
5205+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
5206+
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
52075207

52085208
node-gyp@^5.0.2, node-gyp@^5.1.0:
52095209
version "5.1.1"

0 commit comments

Comments
 (0)