1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const graphql_transformer_core_1 = require("graphql-transformer-core");
|
4 | const graphql_transformer_common_1 = require("graphql-transformer-common");
|
5 | class 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 | }
|
151 | exports.ModelDirectiveConfiguration = ModelDirectiveConfiguration;
|
152 |
|
\ | No newline at end of file |