UNPKG

6.27 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ModelDirectiveConfiguration = void 0;
4const graphql_transformer_core_1 = require("graphql-transformer-core");
5const graphql_transformer_common_1 = require("graphql-transformer-common");
6class ModelDirectiveConfiguration {
7 constructor(directive, def) {
8 this.map = new Map();
9 const typeName = def.name.value;
10 const directiveArguments = graphql_transformer_core_1.getDirectiveArguments(directive);
11 const makeName = (operation, nameOverride, isList = false) => nameOverride ? nameOverride : graphql_transformer_common_1.graphqlName(operation + (isList ? graphql_transformer_common_1.plurality(graphql_transformer_common_1.toUpper(typeName)) : graphql_transformer_common_1.toUpper(typeName)));
12 let shouldHaveCreate = true;
13 let shouldHaveUpdate = true;
14 let shouldHaveDelete = true;
15 let shouldHaveGet = true;
16 let shouldHaveList = true;
17 let shouldHaveOnCreate = true;
18 let shouldHaveOnUpdate = true;
19 let shouldHaveOnDelete = true;
20 let shouldHaveLevel = true;
21 let createName;
22 let updateName;
23 let deleteName;
24 let getName;
25 let listName;
26 let onCreateNames = [];
27 let onUpdateNames = [];
28 let onDeleteNames = [];
29 let level = 'on';
30 if (directiveArguments.mutations === null) {
31 shouldHaveCreate = false;
32 shouldHaveUpdate = false;
33 shouldHaveDelete = false;
34 }
35 else if (directiveArguments.mutations) {
36 if (!directiveArguments.mutations.create) {
37 shouldHaveCreate = false;
38 }
39 else {
40 createName = makeName('create', directiveArguments.mutations.create);
41 }
42 if (!directiveArguments.mutations.update) {
43 shouldHaveUpdate = false;
44 }
45 else {
46 updateName = makeName('update', directiveArguments.mutations.update);
47 }
48 if (!directiveArguments.mutations.delete) {
49 shouldHaveDelete = false;
50 }
51 else {
52 deleteName = makeName('delete', directiveArguments.mutations.delete);
53 }
54 }
55 else {
56 createName = makeName('create');
57 updateName = makeName('update');
58 deleteName = makeName('delete');
59 }
60 if (directiveArguments.queries === null) {
61 shouldHaveGet = false;
62 shouldHaveList = false;
63 }
64 else if (directiveArguments.queries) {
65 if (!directiveArguments.queries.get) {
66 shouldHaveGet = false;
67 }
68 else {
69 getName = makeName('get', directiveArguments.queries.get);
70 }
71 if (!directiveArguments.queries.list) {
72 shouldHaveList = false;
73 }
74 else {
75 listName = makeName('list', directiveArguments.queries.list, true);
76 }
77 }
78 else {
79 getName = makeName('get');
80 listName = makeName('list', null, true);
81 }
82 const subscriptions = directiveArguments.subscriptions;
83 if (subscriptions === null) {
84 shouldHaveOnCreate = false;
85 shouldHaveOnUpdate = false;
86 shouldHaveOnDelete = false;
87 level = 'off';
88 }
89 else if (subscriptions && (subscriptions.onCreate || subscriptions.onUpdate || subscriptions.onDelete)) {
90 if (!directiveArguments.subscriptions.onCreate) {
91 shouldHaveOnCreate = false;
92 }
93 else {
94 directiveArguments.subscriptions.onCreate.forEach(name => {
95 onCreateNames.push(makeName('onCreate', name));
96 });
97 }
98 if (!directiveArguments.subscriptions.onUpdate) {
99 shouldHaveOnUpdate = false;
100 }
101 else {
102 directiveArguments.subscriptions.onUpdate.forEach(name => {
103 onUpdateNames.push(makeName('onUpdate', name));
104 });
105 }
106 if (!directiveArguments.subscriptions.onDelete) {
107 shouldHaveOnDelete = false;
108 }
109 else {
110 directiveArguments.subscriptions.onDelete.forEach(name => {
111 onDeleteNames.push(makeName('onDelete', name));
112 });
113 }
114 }
115 else {
116 onCreateNames.push(makeName('onCreate'));
117 onUpdateNames.push(makeName('onUpdate'));
118 onDeleteNames.push(makeName('onDelete'));
119 }
120 if (directiveArguments.subscriptions && directiveArguments.subscriptions.level) {
121 level = directiveArguments.subscriptions.level;
122 }
123 shouldHaveOnCreate = shouldHaveCreate;
124 shouldHaveOnUpdate = shouldHaveUpdate;
125 shouldHaveOnDelete = shouldHaveDelete;
126 this.map.set('create', { shouldHave: shouldHaveCreate, name: createName });
127 this.map.set('update', { shouldHave: shouldHaveUpdate, name: updateName });
128 this.map.set('delete', { shouldHave: shouldHaveDelete, name: deleteName });
129 this.map.set('get', { shouldHave: shouldHaveGet, name: getName });
130 this.map.set('list', { shouldHave: shouldHaveList, name: listName });
131 this.map.set('onCreate', { shouldHave: shouldHaveOnCreate, names: onCreateNames });
132 this.map.set('onUpdate', { shouldHave: shouldHaveOnUpdate, names: onUpdateNames });
133 this.map.set('onDelete', { shouldHave: shouldHaveOnDelete, names: onDeleteNames });
134 this.map.set('level', { shouldHave: shouldHaveLevel, name: level });
135 }
136 shouldHave(op) {
137 return this.map.get(op).shouldHave;
138 }
139 getName(op) {
140 const { shouldHave, name } = this.map.get(op);
141 if (shouldHave) {
142 return name;
143 }
144 }
145 getNames(op) {
146 const { shouldHave, names } = this.map.get(op);
147 if (shouldHave) {
148 return names;
149 }
150 }
151}
152exports.ModelDirectiveConfiguration = ModelDirectiveConfiguration;
153//# sourceMappingURL=ModelDirectiveConfiguration.js.map
\No newline at end of file