Skip to content

Commit e534703

Browse files
Merge pull request #87 from teamstarter/DP-3835-gsg-simplifier-et-etandre-la-facon-dappeller-les-hooks-de-resolvers-et-ou-mutation-array
feat(hooks): Hooks should be defined as array in addition to a single function.
2 parents 1ddf1b4 + 458fee4 commit e534703

File tree

20 files changed

+1618
-463
lines changed

20 files changed

+1618
-463
lines changed

lib/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
return (mod && mod.__esModule) ? mod : { "default": mod };
44
};
55
exports.__esModule = true;
6-
exports.resolver = exports.removeUnusedAttributes = exports.injectAssociations = exports.generateSchema = exports.generateModelTypes = exports.generateCount = exports.generateApolloServer = void 0;
6+
exports.resolver = exports.removeUnusedAttributes = exports.injectHooks = exports.injectAssociations = exports.generateSchema = exports.generateModelTypes = exports.generateCount = exports.generateApolloServer = void 0;
77
var graphql_sequelize_1 = require("graphql-sequelize");
88
var inject_1 = __importDefault(require("./associations/inject"));
99
exports.injectAssociations = inject_1["default"];
1010
var generateApolloServer_1 = __importDefault(require("./generateApolloServer"));
1111
exports.generateApolloServer = generateApolloServer_1["default"];
1212
var modelTypes_1 = __importDefault(require("./generateTypes/modelTypes"));
1313
exports.generateModelTypes = modelTypes_1["default"];
14+
var injectHooks_1 = require("./injectHooks");
15+
exports.injectHooks = injectHooks_1.injectHooks;
1416
var count_1 = __importDefault(require("./queryResolvers/count"));
1517
exports.generateCount = count_1["default"];
1618
var removeUnusedAttributes_1 = __importDefault(require("./removeUnusedAttributes"));

lib/injectHooks.js

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
"use strict";
2+
exports.__esModule = true;
3+
exports.injectHooks = void 0;
4+
// Injects a function that will be called with the model and the hooks
5+
// The function can return a new list of hooks to be used instead of the original ones
6+
function injectHooks(_a) {
7+
var _b, _c, _d;
8+
var graphqlSchemaDeclaration = _a.graphqlSchemaDeclaration, injectFunctions = _a.injectFunctions;
9+
for (var key in graphqlSchemaDeclaration) {
10+
var declaration = graphqlSchemaDeclaration[key];
11+
if ('model' in declaration) {
12+
if (!declaration.list) {
13+
declaration.list = {};
14+
}
15+
var beforeList = Array.isArray(declaration.list.before)
16+
? declaration.list.before
17+
: declaration.list.before
18+
? [declaration.list.before]
19+
: [];
20+
declaration.list.before = injectFunctions.listBefore
21+
? injectFunctions.listBefore(declaration.model, beforeList)
22+
: beforeList;
23+
var afterList = Array.isArray(declaration.list.after)
24+
? declaration.list.after
25+
: declaration.list.after
26+
? [declaration.list.after]
27+
: [];
28+
declaration.list.after = injectFunctions.listAfter
29+
? injectFunctions.listAfter(declaration.model, afterList)
30+
: afterList;
31+
// Initialize update configuration if it's in actions
32+
if ((_b = declaration.actions) === null || _b === void 0 ? void 0 : _b.includes('update')) {
33+
if (!declaration.update || 'type' in declaration.update) {
34+
declaration.update = {};
35+
}
36+
var beforeUpdate = Array.isArray(declaration.update.before)
37+
? declaration.update.before
38+
: declaration.update.before
39+
? [declaration.update.before]
40+
: [];
41+
declaration.update.before = injectFunctions.updateBefore
42+
? injectFunctions.updateBefore(declaration.model, beforeUpdate)
43+
: beforeUpdate;
44+
var afterUpdate = Array.isArray(declaration.update.after)
45+
? declaration.update.after
46+
: declaration.update.after
47+
? [declaration.update.after]
48+
: [];
49+
declaration.update.after = injectFunctions.updateAfter
50+
? injectFunctions.updateAfter(declaration.model, afterUpdate)
51+
: afterUpdate;
52+
}
53+
// Initialize create configuration if it's in actions
54+
if ((_c = declaration.actions) === null || _c === void 0 ? void 0 : _c.includes('create')) {
55+
if (!declaration.create || 'type' in declaration.create) {
56+
declaration.create = {};
57+
}
58+
var beforeCreate = Array.isArray(declaration.create.before)
59+
? declaration.create.before
60+
: declaration.create.before
61+
? [declaration.create.before]
62+
: [];
63+
declaration.create.before = injectFunctions.createBefore
64+
? injectFunctions.createBefore(declaration.model, beforeCreate)
65+
: beforeCreate;
66+
var afterCreate = Array.isArray(declaration.create.after)
67+
? declaration.create.after
68+
: declaration.create.after
69+
? [declaration.create.after]
70+
: [];
71+
declaration.create.after = injectFunctions.createAfter
72+
? injectFunctions.createAfter(declaration.model, afterCreate)
73+
: afterCreate;
74+
}
75+
// Initialize delete configuration if it's in actions
76+
if ((_d = declaration.actions) === null || _d === void 0 ? void 0 : _d.includes('delete')) {
77+
if (!declaration["delete"] || 'type' in declaration["delete"]) {
78+
declaration["delete"] = {};
79+
}
80+
var beforeDelete = Array.isArray(declaration["delete"].before)
81+
? declaration["delete"].before
82+
: declaration["delete"].before
83+
? [declaration["delete"].before]
84+
: [];
85+
declaration["delete"].before = injectFunctions.deleteBefore
86+
? injectFunctions.deleteBefore(declaration.model, beforeDelete)
87+
: beforeDelete;
88+
var afterDelete = Array.isArray(declaration["delete"].after)
89+
? declaration["delete"].after
90+
: declaration["delete"].after
91+
? [declaration["delete"].after]
92+
: [];
93+
declaration["delete"].after = injectFunctions.deleteAfter
94+
? injectFunctions.deleteAfter(declaration.model, afterDelete)
95+
: afterDelete;
96+
}
97+
}
98+
}
99+
return graphqlSchemaDeclaration;
100+
}
101+
exports.injectHooks = injectHooks;

0 commit comments

Comments
 (0)