Skip to content

Commit c51a4e7

Browse files
feat(hooks): Hooks can now be defined in array of functions in addition of simple functions.
BREAKING CHANGES: Hooks can now be defined in array of functions in addition of simple functions.
1 parent a497128 commit c51a4e7

File tree

17 files changed

+963
-472
lines changed

17 files changed

+963
-472
lines changed

lib/associations/inject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
1616
exports.__esModule = true;
1717
var debug_1 = __importDefault(require("debug"));
1818
var graphql_sequelize_1 = require("graphql-sequelize");
19-
var createListResolver_1 = __importDefault(require("../createListResolver"));
19+
var createListResolver_1 = __importDefault(require("../queryResolvers/createListResolver"));
2020
var field_1 = __importDefault(require("./field"));
2121
var debug = (0, debug_1["default"])('gsg');
2222
function injectAssociations(modelGraphQLType, graphqlSchemaDeclaration, outputTypes, models, globalPreCallback, proxyModelName) {

lib/mutationResolvers/create.js

Lines changed: 109 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -87,38 +87,38 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
8787
? graphqlModelDeclaration.create.extraArg
8888
: {})),
8989
resolve: function (source, args, context, info) { return __awaiter(_this, void 0, void 0, function () {
90-
var attributes, beforeList, beforeList_1, beforeList_1_1, before, handle, e_1_1, beforeHandle, preventDuplicateAttributes_1, filters, entityDuplicate, newEntity, error_1, afterHandle, hookData, updatedEntity;
91-
var e_1, _a, _b, _c;
92-
return __generator(this, function (_d) {
93-
switch (_d.label) {
90+
var attributes, beforeList, beforeList_1, beforeList_1_1, before, handle, e_1_1, beforeList, beforeList_2, beforeList_2_1, before, beforeHandle, e_2_1, preventDuplicateAttributes_1, filters, entityDuplicate, newEntity, error_1, afterList, updatedEntity, hookData, afterList_1, afterList_1_1, after, afterHandle, e_3_1;
91+
var e_1, _a, e_2, _b, e_3, _c, _d, _e;
92+
return __generator(this, function (_f) {
93+
switch (_f.label) {
9494
case 0:
9595
attributes = args[modelName];
9696
if (!graphqlModelDeclaration.before) return [3 /*break*/, 8];
97-
beforeList = typeof graphqlModelDeclaration.before.length !== 'undefined'
97+
beforeList = Array.isArray(graphqlModelDeclaration.before)
9898
? graphqlModelDeclaration.before
9999
: [graphqlModelDeclaration.before];
100-
_d.label = 1;
100+
_f.label = 1;
101101
case 1:
102-
_d.trys.push([1, 6, 7, 8]);
102+
_f.trys.push([1, 6, 7, 8]);
103103
beforeList_1 = __values(beforeList), beforeList_1_1 = beforeList_1.next();
104-
_d.label = 2;
104+
_f.label = 2;
105105
case 2:
106106
if (!!beforeList_1_1.done) return [3 /*break*/, 5];
107107
before = beforeList_1_1.value;
108108
handle = globalPreCallback('createGlobalBefore');
109109
return [4 /*yield*/, before({ args: args, context: context, info: info })];
110110
case 3:
111-
_d.sent();
111+
_f.sent();
112112
if (handle) {
113113
handle();
114114
}
115-
_d.label = 4;
115+
_f.label = 4;
116116
case 4:
117117
beforeList_1_1 = beforeList_1.next();
118118
return [3 /*break*/, 2];
119119
case 5: return [3 /*break*/, 8];
120120
case 6:
121-
e_1_1 = _d.sent();
121+
e_1_1 = _f.sent();
122122
e_1 = { error: e_1_1 };
123123
return [3 /*break*/, 8];
124124
case 7:
@@ -130,27 +130,52 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
130130
case 8:
131131
if (!(graphqlModelDeclaration.create &&
132132
'before' in graphqlModelDeclaration.create &&
133-
graphqlModelDeclaration.create.before)) return [3 /*break*/, 10];
133+
graphqlModelDeclaration.create.before)) return [3 /*break*/, 16];
134+
beforeList = Array.isArray(graphqlModelDeclaration.create.before)
135+
? graphqlModelDeclaration.create.before
136+
: [graphqlModelDeclaration.create.before];
137+
_f.label = 9;
138+
case 9:
139+
_f.trys.push([9, 14, 15, 16]);
140+
beforeList_2 = __values(beforeList), beforeList_2_1 = beforeList_2.next();
141+
_f.label = 10;
142+
case 10:
143+
if (!!beforeList_2_1.done) return [3 /*break*/, 13];
144+
before = beforeList_2_1.value;
134145
beforeHandle = globalPreCallback('createBefore');
135-
return [4 /*yield*/, graphqlModelDeclaration.create.before({
146+
return [4 /*yield*/, before({
136147
source: source,
137148
args: args,
138149
context: context,
139150
info: info
140151
})];
141-
case 9:
142-
attributes = _d.sent();
152+
case 11:
153+
attributes = _f.sent();
143154
if (!attributes) {
144155
throw new Error('The before hook must always return the create method first parameter.');
145156
}
146157
if (beforeHandle) {
147158
beforeHandle();
148159
}
149-
_d.label = 10;
150-
case 10:
160+
_f.label = 12;
161+
case 12:
162+
beforeList_2_1 = beforeList_2.next();
163+
return [3 /*break*/, 10];
164+
case 13: return [3 /*break*/, 16];
165+
case 14:
166+
e_2_1 = _f.sent();
167+
e_2 = { error: e_2_1 };
168+
return [3 /*break*/, 16];
169+
case 15:
170+
try {
171+
if (beforeList_2_1 && !beforeList_2_1.done && (_b = beforeList_2["return"])) _b.call(beforeList_2);
172+
}
173+
finally { if (e_2) throw e_2.error; }
174+
return [7 /*endfinally*/];
175+
case 16:
151176
if (!(graphqlModelDeclaration.create &&
152177
'preventDuplicateOnAttributes' in graphqlModelDeclaration.create &&
153-
graphqlModelDeclaration.create.preventDuplicateOnAttributes)) return [3 /*break*/, 13];
178+
graphqlModelDeclaration.create.preventDuplicateOnAttributes)) return [3 /*break*/, 19];
154179
preventDuplicateAttributes_1 = graphqlModelDeclaration.create.preventDuplicateOnAttributes;
155180
filters = Object.keys(attributes).reduce(function (acc, key) {
156181
if (preventDuplicateAttributes_1.includes(key)) {
@@ -159,71 +184,101 @@ function generateMutationCreate(modelName, inputType, outputType, model, graphql
159184
return acc;
160185
}, {});
161186
entityDuplicate = null;
162-
if (!Object.keys(filters).length) return [3 /*break*/, 12];
187+
if (!Object.keys(filters).length) return [3 /*break*/, 18];
163188
return [4 /*yield*/, model.findOne({
164189
where: filters
165190
})];
166-
case 11:
167-
entityDuplicate = _d.sent();
168-
_d.label = 12;
169-
case 12:
191+
case 17:
192+
entityDuplicate = _f.sent();
193+
_f.label = 18;
194+
case 18:
170195
if (entityDuplicate) {
171196
return [2 /*return*/, entityDuplicate];
172197
}
173-
_d.label = 13;
174-
case 13:
198+
_f.label = 19;
199+
case 19:
175200
newEntity = undefined;
176-
_d.label = 14;
177-
case 14:
178-
_d.trys.push([14, 16, , 17]);
201+
_f.label = 20;
202+
case 20:
203+
_f.trys.push([20, 22, , 23]);
179204
return [4 /*yield*/, model.create(attributes)];
180-
case 15:
181-
newEntity = _d.sent();
182-
return [3 /*break*/, 17];
183-
case 16:
184-
error_1 = _d.sent();
185-
// @ts-ignore
186-
throw new graphql_1.GraphQLError(error_1.message);
187-
case 17:
205+
case 21:
206+
newEntity = _f.sent();
207+
return [3 /*break*/, 23];
208+
case 22:
209+
error_1 = _f.sent();
210+
if (error_1 instanceof Error) {
211+
throw error_1;
212+
}
213+
throw new Error('Unknown error occurred while creating entity');
214+
case 23:
188215
if (!newEntity) {
189-
return [2 /*return*/];
216+
return [2 /*return*/, undefined];
190217
}
191218
if (!(graphqlModelDeclaration.create &&
192219
'after' in graphqlModelDeclaration.create &&
193-
graphqlModelDeclaration.create.after)) return [3 /*break*/, 20];
220+
graphqlModelDeclaration.create.after)) return [3 /*break*/, 33];
221+
afterList = Array.isArray(graphqlModelDeclaration.create.after)
222+
? graphqlModelDeclaration.create.after
223+
: [graphqlModelDeclaration.create.after];
224+
updatedEntity = newEntity;
225+
hookData = { data: updatedEntity.get({ plain: true }) };
226+
_f.label = 24;
227+
case 24:
228+
_f.trys.push([24, 29, 30, 31]);
229+
afterList_1 = __values(afterList), afterList_1_1 = afterList_1.next();
230+
_f.label = 25;
231+
case 25:
232+
if (!!afterList_1_1.done) return [3 /*break*/, 28];
233+
after = afterList_1_1.value;
194234
afterHandle = globalPreCallback('createAfter');
195-
hookData = { data: newEntity.get({ plain: true }) };
196-
return [4 /*yield*/, graphqlModelDeclaration.create.after({
197-
newEntity: newEntity,
235+
return [4 /*yield*/, after({
236+
newEntity: updatedEntity,
198237
source: source,
199238
args: args,
200239
context: context,
201240
info: info,
202241
setWebhookData: (0, setWebhookData_1["default"])(hookData)
203242
})];
204-
case 18:
205-
updatedEntity = _d.sent();
243+
case 26:
244+
updatedEntity = _f.sent();
206245
if (afterHandle) {
207246
afterHandle();
208247
}
248+
_f.label = 27;
249+
case 27:
250+
afterList_1_1 = afterList_1.next();
251+
return [3 /*break*/, 25];
252+
case 28: return [3 /*break*/, 31];
253+
case 29:
254+
e_3_1 = _f.sent();
255+
e_3 = { error: e_3_1 };
256+
return [3 /*break*/, 31];
257+
case 30:
258+
try {
259+
if (afterList_1_1 && !afterList_1_1.done && (_c = afterList_1["return"])) _c.call(afterList_1);
260+
}
261+
finally { if (e_3) throw e_3.error; }
262+
return [7 /*endfinally*/];
263+
case 31:
209264
if (pubSubInstance) {
210-
pubSubInstance.publish("".concat(modelName, "Created"), (_b = {},
211-
_b["".concat(modelName, "Created")] = updatedEntity.get(),
212-
_b));
265+
pubSubInstance.publish("".concat(modelName, "Created"), (_d = {},
266+
_d["".concat(modelName, "Created")] = updatedEntity.get(),
267+
_d));
213268
}
214269
return [4 /*yield*/, (0, callModelWebhook_1["default"])(modelName, graphqlModelDeclaration.webhooks, 'create', context, hookData.data, callWebhook)];
215-
case 19:
216-
_d.sent();
270+
case 32:
271+
_f.sent();
217272
return [2 /*return*/, updatedEntity];
218-
case 20:
273+
case 33:
219274
if (pubSubInstance) {
220-
pubSubInstance.publish("".concat(modelName, "Created"), (_c = {},
221-
_c["".concat(modelName, "Created")] = newEntity.get(),
222-
_c));
275+
pubSubInstance.publish("".concat(modelName, "Created"), (_e = {},
276+
_e["".concat(modelName, "Created")] = newEntity.get(),
277+
_e));
223278
}
224279
return [4 /*yield*/, (0, callModelWebhook_1["default"])(modelName, graphqlModelDeclaration.webhooks, 'create', context, __assign({}, newEntity.get({ plain: true })), callWebhook)];
225-
case 21:
226-
_d.sent();
280+
case 34:
281+
_f.sent();
227282
return [2 /*return*/, newEntity];
228283
}
229284
});

0 commit comments

Comments
 (0)