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