UNPKG

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