@subsquid/openreader 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -0
- package/dist/gql/opencrud.d.ts +4 -0
- package/dist/gql/opencrud.js +301 -0
- package/dist/gql/opencrud.js.map +1 -0
- package/dist/gql/schema.d.ts +4 -0
- package/dist/gql/schema.js +271 -0
- package/dist/gql/schema.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.js +97 -0
- package/dist/main.js.map +1 -0
- package/dist/model.d.ts +70 -0
- package/dist/model.js +3 -0
- package/dist/model.js.map +1 -0
- package/dist/model.tools.d.ts +9 -0
- package/dist/model.tools.js +120 -0
- package/dist/model.tools.js.map +1 -0
- package/dist/orderBy.d.ts +16 -0
- package/dist/orderBy.js +80 -0
- package/dist/orderBy.js.map +1 -0
- package/dist/queryBuilder.d.ts +52 -0
- package/dist/queryBuilder.js +605 -0
- package/dist/queryBuilder.js.map +1 -0
- package/dist/relayConnection.d.ts +36 -0
- package/dist/relayConnection.js +43 -0
- package/dist/relayConnection.js.map +1 -0
- package/dist/requestedFields.d.ts +32 -0
- package/dist/requestedFields.js +172 -0
- package/dist/requestedFields.js.map +1 -0
- package/dist/resolver.d.ts +8 -0
- package/dist/resolver.js +142 -0
- package/dist/resolver.js.map +1 -0
- package/dist/scalars.d.ts +33 -0
- package/dist/scalars.js +239 -0
- package/dist/scalars.js.map +1 -0
- package/dist/server.d.ts +25 -0
- package/dist/server.js +119 -0
- package/dist/server.js.map +1 -0
- package/dist/util.d.ts +19 -0
- package/dist/util.js +89 -0
- package/dist/util.js.map +1 -0
- package/dist/where.d.ts +8 -0
- package/dist/where.js +96 -0
- package/dist/where.js.map +1 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# OpenReader
|
|
2
|
+
|
|
3
|
+
GraphQL server for Hydra. Given [hydra schema](https://docs.subsquid.io/schema-spec)
|
|
4
|
+
and compatible database it serves "read part" of [OpenCRUD spec](https://www.opencrud.org).
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
openreader schema.graphql
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Database connection and server port are configured via environment variables:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
DB_NAME
|
|
16
|
+
DB_USER
|
|
17
|
+
DB_PASS
|
|
18
|
+
DB_HOST
|
|
19
|
+
DB_PORT
|
|
20
|
+
GRAPHQL_SERVER_PORT
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Compatibility
|
|
24
|
+
|
|
25
|
+
OpenReader is mostly compatible with previous warthog based implementation.
|
|
26
|
+
Below is possibly incomplete list of edge cases where it differs.
|
|
27
|
+
|
|
28
|
+
1. If two object types participate in a same union,
|
|
29
|
+
then their properties must have either different names or have a same type (modulo nullability).
|
|
30
|
+
2. Only camel case names of types and properties are allowed.
|
|
31
|
+
3. Filtering on typed json fields works without `_json` operator.
|
|
32
|
+
4. `orderBy` argument of relay connection is required, only forward pagination is supported.
|
|
33
|
+
5. `RelayConnection.edges`, `RelayConnection.edges.node` and `FulltextSearch.item` fields
|
|
34
|
+
do not support multiple aliases in GraphQL queries.
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildServerSchema = exports.generateOpenCrudQueries = void 0;
|
|
7
|
+
const apollo_server_core_1 = require("apollo-server-core");
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const graphql_1 = require("graphql");
|
|
10
|
+
const orderBy_1 = require("../orderBy");
|
|
11
|
+
const scalars_1 = require("../scalars");
|
|
12
|
+
const util_1 = require("../util");
|
|
13
|
+
function generateOpenCrudQueries(model) {
|
|
14
|
+
let out = new util_1.Output();
|
|
15
|
+
generatePageInfoType();
|
|
16
|
+
for (let name in model) {
|
|
17
|
+
let item = model[name];
|
|
18
|
+
switch (item.kind) {
|
|
19
|
+
case 'entity':
|
|
20
|
+
generateOrderByInput(name);
|
|
21
|
+
generateWhereUniqueInput(name);
|
|
22
|
+
generateWhereInput(name, item);
|
|
23
|
+
generateObjectType(name, item);
|
|
24
|
+
generateEntityConnection(name);
|
|
25
|
+
break;
|
|
26
|
+
case 'object':
|
|
27
|
+
if (hasFilters(item)) {
|
|
28
|
+
generateWhereInput(name, item);
|
|
29
|
+
}
|
|
30
|
+
generateObjectType(name, item);
|
|
31
|
+
break;
|
|
32
|
+
case 'interface':
|
|
33
|
+
generateObjectType(name, item);
|
|
34
|
+
break;
|
|
35
|
+
case 'union':
|
|
36
|
+
generateUnionWhereInput(name, item);
|
|
37
|
+
generateUnionType(name, item);
|
|
38
|
+
break;
|
|
39
|
+
case 'enum':
|
|
40
|
+
generateEnumType(name, item);
|
|
41
|
+
break;
|
|
42
|
+
case 'fts':
|
|
43
|
+
generateFtsTypes(name, item);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
out.block('type Query', () => {
|
|
48
|
+
for (let name in model) {
|
|
49
|
+
let item = model[name];
|
|
50
|
+
if (item.kind == 'entity') {
|
|
51
|
+
out.line(`${(0, util_1.lowerCaseFirst)(name)}ById(id: ID!): ${name}`);
|
|
52
|
+
out.line(`${(0, util_1.lowerCaseFirst)(name)}ByUniqueInput(where: ${name}WhereUniqueInput!): ${name} @deprecated(reason: "Use \`${(0, util_1.lowerCaseFirst)(name)}ById\`")`);
|
|
53
|
+
out.line(`${(0, util_1.lowerCaseFirst)((0, util_1.pluralize)(name))}${manyArguments(name)}: [${name}!]!`);
|
|
54
|
+
out.line(`${(0, util_1.lowerCaseFirst)((0, util_1.pluralize)(name))}Connection${connectionArguments(name)}: ${(0, util_1.pluralize)(name)}Connection!`);
|
|
55
|
+
}
|
|
56
|
+
if (item.kind == 'fts') {
|
|
57
|
+
generateFtsQuery(name, item);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
function generateObjectType(name, object) {
|
|
62
|
+
let head;
|
|
63
|
+
if (object.kind == 'interface') {
|
|
64
|
+
head = `interface ${name}`;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
head = `type ${name}`;
|
|
68
|
+
if (object.interfaces?.length) {
|
|
69
|
+
head += ` implements ${object.interfaces.join(' & ')}`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
generateDescription(object.description);
|
|
73
|
+
out.block(head, () => {
|
|
74
|
+
for (let key in object.properties) {
|
|
75
|
+
let prop = object.properties[key];
|
|
76
|
+
let gqlType = renderPropType(prop);
|
|
77
|
+
generateDescription(prop.description);
|
|
78
|
+
if (prop.type.kind == 'list-relation') {
|
|
79
|
+
out.line(`${key}${manyArguments(prop.type.entity)}: ${gqlType}`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
out.line(`${key}: ${gqlType}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
out.line();
|
|
87
|
+
}
|
|
88
|
+
function renderPropType(prop) {
|
|
89
|
+
switch (prop.type.kind) {
|
|
90
|
+
case "list":
|
|
91
|
+
return `[${renderPropType(prop.type.item)}]${prop.nullable ? '' : '!'}`;
|
|
92
|
+
case 'fk':
|
|
93
|
+
return `${prop.type.foreignEntity}${prop.nullable ? '' : '!'}`;
|
|
94
|
+
case "list-relation":
|
|
95
|
+
return `[${prop.type.entity}!]!`;
|
|
96
|
+
default:
|
|
97
|
+
return prop.type.name + (prop.nullable ? '' : '!');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function manyArguments(entityName) {
|
|
101
|
+
return `(where: ${entityName}WhereInput orderBy: [${entityName}OrderByInput] offset: Int limit: Int)`;
|
|
102
|
+
}
|
|
103
|
+
function connectionArguments(entityName) {
|
|
104
|
+
return `(orderBy: [${entityName}OrderByInput!]! after: String first: Int where: ${entityName}WhereInput)`;
|
|
105
|
+
}
|
|
106
|
+
function generateOrderByInput(entityName) {
|
|
107
|
+
out.block(`enum ${entityName}OrderByInput`, () => {
|
|
108
|
+
let mapping = (0, orderBy_1.getOrderByMapping)(model, entityName);
|
|
109
|
+
for (let key of mapping.keys()) {
|
|
110
|
+
out.line(key);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
out.line();
|
|
114
|
+
}
|
|
115
|
+
function generateWhereUniqueInput(entityName) {
|
|
116
|
+
out.block(`input ${entityName}WhereUniqueInput`, () => {
|
|
117
|
+
out.line('id: ID!');
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function generateWhereInput(name, object) {
|
|
121
|
+
out.block(`input ${name}WhereInput`, () => {
|
|
122
|
+
generatePropsFilters(object.properties);
|
|
123
|
+
if (object.kind == 'entity') {
|
|
124
|
+
out.line(`AND: [${name}WhereInput!]`);
|
|
125
|
+
out.line(`OR: [${name}WhereInput!]`);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
out.line();
|
|
129
|
+
}
|
|
130
|
+
function generatePropsFilters(props) {
|
|
131
|
+
for (let key in props) {
|
|
132
|
+
let prop = props[key];
|
|
133
|
+
switch (prop.type.kind) {
|
|
134
|
+
case 'scalar':
|
|
135
|
+
case 'enum':
|
|
136
|
+
generateScalarFilters(key, prop.type.name);
|
|
137
|
+
break;
|
|
138
|
+
case 'list':
|
|
139
|
+
if (prop.type.item.type.kind == 'scalar' || prop.type.item.type.kind == 'enum') {
|
|
140
|
+
let item = prop.type.item.type.name;
|
|
141
|
+
out.line(`${key}_containsAll: [${item}!]`);
|
|
142
|
+
out.line(`${key}_containsAny: [${item}!]`);
|
|
143
|
+
out.line(`${key}_containsNone: [${item}!]`);
|
|
144
|
+
}
|
|
145
|
+
break;
|
|
146
|
+
case 'object':
|
|
147
|
+
if (hasFilters(getObject(prop.type.name))) {
|
|
148
|
+
out.line(`${key}: ${prop.type.name}WhereInput`);
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
case 'union':
|
|
152
|
+
out.line(`${key}: ${prop.type.name}WhereInput`);
|
|
153
|
+
break;
|
|
154
|
+
case 'fk':
|
|
155
|
+
out.line(`${key}: ${prop.type.foreignEntity}WhereInput`);
|
|
156
|
+
break;
|
|
157
|
+
case 'list-relation':
|
|
158
|
+
out.line(`${key}_every: ${prop.type.entity}WhereInput`);
|
|
159
|
+
out.line(`${key}_some: ${prop.type.entity}WhereInput`);
|
|
160
|
+
out.line(`${key}_none: ${prop.type.entity}WhereInput`);
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function hasFilters(obj) {
|
|
166
|
+
for (let key in obj.properties) {
|
|
167
|
+
let propType = obj.properties[key].type;
|
|
168
|
+
switch (propType.kind) {
|
|
169
|
+
case 'scalar':
|
|
170
|
+
case 'enum':
|
|
171
|
+
case 'union':
|
|
172
|
+
return true;
|
|
173
|
+
case 'object':
|
|
174
|
+
if (hasFilters(getObject(propType.name))) {
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
function getObject(name) {
|
|
182
|
+
let obj = model[name];
|
|
183
|
+
(0, assert_1.default)(obj.kind == 'object');
|
|
184
|
+
return obj;
|
|
185
|
+
}
|
|
186
|
+
function generateUnionWhereInput(name, union) {
|
|
187
|
+
out.block(`input ${name}WhereInput`, () => {
|
|
188
|
+
// TODO: unify and use enum
|
|
189
|
+
out.line('isTypeOf_eq: String');
|
|
190
|
+
out.line('isTypeOf_not_eq: String');
|
|
191
|
+
out.line('isTypeOf_in: [String!]');
|
|
192
|
+
out.line('isTypeOf_not_in: [String!]');
|
|
193
|
+
let props = {};
|
|
194
|
+
union.variants.forEach(variant => {
|
|
195
|
+
let obj = getObject(variant);
|
|
196
|
+
Object.assign(props, obj.properties);
|
|
197
|
+
});
|
|
198
|
+
generatePropsFilters(props);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function generateScalarFilters(fieldName, graphqlType) {
|
|
202
|
+
out.line(`${fieldName}_eq: ${graphqlType}`);
|
|
203
|
+
out.line(`${fieldName}_not_eq: ${graphqlType}`);
|
|
204
|
+
switch (graphqlType) {
|
|
205
|
+
case 'ID':
|
|
206
|
+
case 'String':
|
|
207
|
+
case 'Int':
|
|
208
|
+
case 'Float':
|
|
209
|
+
case 'DateTime':
|
|
210
|
+
case 'BigInt':
|
|
211
|
+
out.line(`${fieldName}_gt: ${graphqlType}`);
|
|
212
|
+
out.line(`${fieldName}_gte: ${graphqlType}`);
|
|
213
|
+
out.line(`${fieldName}_lt: ${graphqlType}`);
|
|
214
|
+
out.line(`${fieldName}_lte: ${graphqlType}`);
|
|
215
|
+
out.line(`${fieldName}_in: [${graphqlType}!]`);
|
|
216
|
+
out.line(`${fieldName}_not_in: [${graphqlType}!]`);
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
if (graphqlType == 'String' || graphqlType == 'ID') {
|
|
220
|
+
out.line(`${fieldName}_contains: ${graphqlType}`);
|
|
221
|
+
out.line(`${fieldName}_not_contains: ${graphqlType}`);
|
|
222
|
+
out.line(`${fieldName}_startsWith: ${graphqlType}`);
|
|
223
|
+
out.line(`${fieldName}_not_startsWith: ${graphqlType}`);
|
|
224
|
+
out.line(`${fieldName}_endsWith: ${graphqlType}`);
|
|
225
|
+
out.line(`${fieldName}_not_endsWith: ${graphqlType}`);
|
|
226
|
+
}
|
|
227
|
+
if (model[graphqlType]?.kind == 'enum') {
|
|
228
|
+
out.line(`${fieldName}_in: [${graphqlType}!]`);
|
|
229
|
+
out.line(`${fieldName}_not_in: [${graphqlType}!]`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function generateUnionType(name, union) {
|
|
233
|
+
generateDescription(union.description);
|
|
234
|
+
out.line(`union ${name} = ${union.variants.join(' | ')}`);
|
|
235
|
+
out.line();
|
|
236
|
+
}
|
|
237
|
+
function generateEnumType(name, e) {
|
|
238
|
+
generateDescription(e.description);
|
|
239
|
+
out.block(`enum ${name}`, () => {
|
|
240
|
+
for (let key in e.values) {
|
|
241
|
+
out.line(key);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
function generatePageInfoType() {
|
|
246
|
+
out.block(`type PageInfo`, () => {
|
|
247
|
+
out.line('hasNextPage: Boolean!');
|
|
248
|
+
out.line('hasPreviousPage: Boolean!');
|
|
249
|
+
out.line('startCursor: String!');
|
|
250
|
+
out.line('endCursor: String!');
|
|
251
|
+
});
|
|
252
|
+
out.line();
|
|
253
|
+
}
|
|
254
|
+
function generateEntityConnection(name) {
|
|
255
|
+
out.block(`type ${name}Edge`, () => {
|
|
256
|
+
out.line(`node: ${name}!`);
|
|
257
|
+
out.line(`cursor: String!`);
|
|
258
|
+
});
|
|
259
|
+
out.line();
|
|
260
|
+
out.block(`type ${(0, util_1.pluralize)(name)}Connection`, () => {
|
|
261
|
+
out.line(`edges: [${name}Edge!]!`);
|
|
262
|
+
out.line(`pageInfo: PageInfo!`);
|
|
263
|
+
out.line(`totalCount: Int!`);
|
|
264
|
+
});
|
|
265
|
+
out.line();
|
|
266
|
+
}
|
|
267
|
+
function generateFtsTypes(name, query) {
|
|
268
|
+
let itemType = (0, util_1.upperCaseFirst)(name) + '_Item';
|
|
269
|
+
out.line(`union ${itemType} = ${query.sources.map(s => s.entity).join(' | ')}`);
|
|
270
|
+
out.line();
|
|
271
|
+
out.block(`type ${(0, util_1.upperCaseFirst)(name)}Output`, () => {
|
|
272
|
+
out.line(`item: ${itemType}!`);
|
|
273
|
+
out.line(`rank: Float!`);
|
|
274
|
+
out.line(`highlight: String!`);
|
|
275
|
+
});
|
|
276
|
+
out.line();
|
|
277
|
+
}
|
|
278
|
+
function generateFtsQuery(name, query) {
|
|
279
|
+
let where = query.sources.map(src => {
|
|
280
|
+
return `where${src.entity}: ${src.entity}WhereInput`;
|
|
281
|
+
});
|
|
282
|
+
out.line(`${name}(text: String! ${where.join(' ')} limit: Int offset: Int): [${(0, util_1.upperCaseFirst)(name)}Output!]!`);
|
|
283
|
+
}
|
|
284
|
+
function generateDescription(description) {
|
|
285
|
+
if (description) {
|
|
286
|
+
out.line((0, graphql_1.print)({
|
|
287
|
+
kind: 'StringValue',
|
|
288
|
+
value: description
|
|
289
|
+
}));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return out.toString();
|
|
293
|
+
}
|
|
294
|
+
exports.generateOpenCrudQueries = generateOpenCrudQueries;
|
|
295
|
+
function buildServerSchema(model) {
|
|
296
|
+
let scalars = scalars_1.scalars_list.map(name => 'scalar ' + name).join('\n');
|
|
297
|
+
let queries = generateOpenCrudQueries(model);
|
|
298
|
+
return (0, apollo_server_core_1.gql)(scalars + '\n\n' + queries);
|
|
299
|
+
}
|
|
300
|
+
exports.buildServerSchema = buildServerSchema;
|
|
301
|
+
//# sourceMappingURL=opencrud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencrud.js","sourceRoot":"","sources":["../../src/gql/opencrud.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildModel = exports.buildSchema = void 0;
|
|
7
|
+
const apollo_server_core_1 = require("apollo-server-core");
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const graphql_1 = require("graphql");
|
|
10
|
+
const model_tools_1 = require("../model.tools");
|
|
11
|
+
const scalars_1 = require("../scalars");
|
|
12
|
+
const baseSchema = (0, graphql_1.buildASTSchema)((0, apollo_server_core_1.gql)(`
|
|
13
|
+
directive @entity on OBJECT
|
|
14
|
+
directive @derivedFrom(field: String!) on FIELD_DEFINITION
|
|
15
|
+
directive @unique on FIELD_DEFINITION
|
|
16
|
+
directive @fulltext(query: String!) on FIELD_DEFINITION
|
|
17
|
+
directive @variant on OBJECT # legacy
|
|
18
|
+
directive @jsonField on OBJECT # legacy
|
|
19
|
+
${scalars_1.scalars_list.map(name => 'scalar ' + name).join('\n')}
|
|
20
|
+
`));
|
|
21
|
+
function buildSchema(doc) {
|
|
22
|
+
return (0, graphql_1.extendSchema)(baseSchema, doc);
|
|
23
|
+
}
|
|
24
|
+
exports.buildSchema = buildSchema;
|
|
25
|
+
function buildModel(schema) {
|
|
26
|
+
let types = schema.getTypeMap();
|
|
27
|
+
let model = {};
|
|
28
|
+
for (let key in types) {
|
|
29
|
+
let type = types[key];
|
|
30
|
+
if (isEntityType(type)) {
|
|
31
|
+
addEntityOrJsonObjectOrInterface(model, type);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
(0, model_tools_1.validateModel)(model);
|
|
35
|
+
return model;
|
|
36
|
+
}
|
|
37
|
+
exports.buildModel = buildModel;
|
|
38
|
+
function isEntityType(type) {
|
|
39
|
+
return type instanceof graphql_1.GraphQLObjectType && !!type.astNode?.directives?.some(d => d.name.value == 'entity');
|
|
40
|
+
}
|
|
41
|
+
function addEntityOrJsonObjectOrInterface(model, type) {
|
|
42
|
+
if (model[type.name])
|
|
43
|
+
return;
|
|
44
|
+
let kind = isEntityType(type)
|
|
45
|
+
? 'entity'
|
|
46
|
+
: type instanceof graphql_1.GraphQLInterfaceType ? 'interface' : 'object';
|
|
47
|
+
let properties = {};
|
|
48
|
+
let interfaces = [];
|
|
49
|
+
let description = type.description || undefined;
|
|
50
|
+
if (kind != 'interface') {
|
|
51
|
+
model[type.name] = { kind, properties, interfaces, description };
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
model[type.name] = { kind, properties, description };
|
|
55
|
+
}
|
|
56
|
+
let fields = type.getFields();
|
|
57
|
+
if (kind == 'entity') {
|
|
58
|
+
if (fields.id == null) {
|
|
59
|
+
properties.id = {
|
|
60
|
+
type: { kind: 'scalar', name: 'ID' },
|
|
61
|
+
nullable: false
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
let correctIdType = fields.id.type instanceof graphql_1.GraphQLNonNull
|
|
66
|
+
&& fields.id.type.ofType instanceof graphql_1.GraphQLScalarType
|
|
67
|
+
&& fields.id.type.ofType.name === 'ID';
|
|
68
|
+
if (!correctIdType) {
|
|
69
|
+
throw unsupportedFieldTypeError(type.name, 'id');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
for (let key in fields) {
|
|
74
|
+
let f = fields[key];
|
|
75
|
+
let fieldType = f.type;
|
|
76
|
+
let nullable = true;
|
|
77
|
+
let description = f.description || undefined;
|
|
78
|
+
handleFulltextDirective(model, type, f);
|
|
79
|
+
if (fieldType instanceof graphql_1.GraphQLNonNull) {
|
|
80
|
+
nullable = false;
|
|
81
|
+
fieldType = fieldType.ofType;
|
|
82
|
+
}
|
|
83
|
+
let list = unwrapList(fieldType);
|
|
84
|
+
fieldType = list.item;
|
|
85
|
+
if (fieldType instanceof graphql_1.GraphQLScalarType) {
|
|
86
|
+
properties[key] = {
|
|
87
|
+
type: wrapWithList(list.nulls, {
|
|
88
|
+
kind: 'scalar',
|
|
89
|
+
name: fieldType.name
|
|
90
|
+
}),
|
|
91
|
+
nullable,
|
|
92
|
+
description
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
else if (fieldType instanceof graphql_1.GraphQLEnumType) {
|
|
96
|
+
addEnum(model, fieldType);
|
|
97
|
+
properties[key] = {
|
|
98
|
+
type: wrapWithList(list.nulls, {
|
|
99
|
+
kind: 'enum',
|
|
100
|
+
name: fieldType.name
|
|
101
|
+
}),
|
|
102
|
+
nullable,
|
|
103
|
+
description
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
else if (fieldType instanceof graphql_1.GraphQLUnionType) {
|
|
107
|
+
addUnion(model, fieldType);
|
|
108
|
+
properties[key] = {
|
|
109
|
+
type: wrapWithList(list.nulls, {
|
|
110
|
+
kind: 'union',
|
|
111
|
+
name: fieldType.name
|
|
112
|
+
}),
|
|
113
|
+
nullable,
|
|
114
|
+
description
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
else if (fieldType instanceof graphql_1.GraphQLObjectType) {
|
|
118
|
+
if (isEntityType(fieldType)) {
|
|
119
|
+
switch (list.nulls.length) {
|
|
120
|
+
case 0:
|
|
121
|
+
properties[key] = {
|
|
122
|
+
type: {
|
|
123
|
+
kind: 'fk',
|
|
124
|
+
foreignEntity: fieldType.name
|
|
125
|
+
},
|
|
126
|
+
nullable,
|
|
127
|
+
description
|
|
128
|
+
};
|
|
129
|
+
break;
|
|
130
|
+
case 1:
|
|
131
|
+
let derivedFrom = f.astNode?.directives?.find(d => d.name.value == 'derivedFrom');
|
|
132
|
+
if (derivedFrom == null) {
|
|
133
|
+
throw new Error(`@derivedFrom directive is required on ${type.name}.${key} declaration`);
|
|
134
|
+
}
|
|
135
|
+
let derivedFromValueNode = derivedFrom.arguments?.[0].value;
|
|
136
|
+
(0, assert_1.default)(derivedFromValueNode != null);
|
|
137
|
+
(0, assert_1.default)(derivedFromValueNode.kind == 'StringValue');
|
|
138
|
+
properties[key] = {
|
|
139
|
+
type: {
|
|
140
|
+
kind: 'list-relation',
|
|
141
|
+
entity: fieldType.name,
|
|
142
|
+
field: derivedFromValueNode.value
|
|
143
|
+
},
|
|
144
|
+
nullable: false,
|
|
145
|
+
description
|
|
146
|
+
};
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
throw unsupportedFieldTypeError(type.name, key);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
addEntityOrJsonObjectOrInterface(model, fieldType);
|
|
154
|
+
properties[key] = {
|
|
155
|
+
type: wrapWithList(list.nulls, {
|
|
156
|
+
kind: 'object',
|
|
157
|
+
name: fieldType.name
|
|
158
|
+
}),
|
|
159
|
+
nullable,
|
|
160
|
+
description
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
throw unsupportedFieldTypeError(type.name, key);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (kind != 'interface') {
|
|
169
|
+
type.getInterfaces().forEach(i => {
|
|
170
|
+
addEntityOrJsonObjectOrInterface(model, i);
|
|
171
|
+
interfaces.push(i.name);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function addUnion(model, type) {
|
|
176
|
+
if (model[type.name])
|
|
177
|
+
return;
|
|
178
|
+
let variants = [];
|
|
179
|
+
model[type.name] = {
|
|
180
|
+
kind: 'union',
|
|
181
|
+
variants,
|
|
182
|
+
description: type.description || undefined
|
|
183
|
+
};
|
|
184
|
+
type.getTypes().forEach(obj => {
|
|
185
|
+
if (isEntityType(obj)) {
|
|
186
|
+
throw new Error(`union ${type.name} has entity ${obj.name} as a variant. Entities in union types are not supported`);
|
|
187
|
+
}
|
|
188
|
+
addEntityOrJsonObjectOrInterface(model, obj);
|
|
189
|
+
variants.push(obj.name);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
function addEnum(model, type) {
|
|
193
|
+
if (model[type.name])
|
|
194
|
+
return;
|
|
195
|
+
let values = {};
|
|
196
|
+
model[type.name] = {
|
|
197
|
+
kind: 'enum',
|
|
198
|
+
values,
|
|
199
|
+
description: type.description || undefined
|
|
200
|
+
};
|
|
201
|
+
type.getValues().forEach(item => {
|
|
202
|
+
values[item.name] = {};
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
function handleFulltextDirective(model, object, f) {
|
|
206
|
+
f.astNode?.directives?.forEach(d => {
|
|
207
|
+
if (d.name.value != 'fulltext')
|
|
208
|
+
return;
|
|
209
|
+
if (!isEntityType(object) || !isStringField(f)) {
|
|
210
|
+
throw new Error(`@fulltext directive can be only applied to String entity fields, but was applied to ${object.name}.${f.name}`);
|
|
211
|
+
}
|
|
212
|
+
let queryArgument = d.arguments?.find(arg => arg.name.value == 'query');
|
|
213
|
+
(0, assert_1.default)(queryArgument != null);
|
|
214
|
+
(0, assert_1.default)(queryArgument.value.kind == 'StringValue');
|
|
215
|
+
let queryName = queryArgument.value.value;
|
|
216
|
+
let query = model[queryName];
|
|
217
|
+
if (query == null) {
|
|
218
|
+
query = model[queryName] = {
|
|
219
|
+
kind: 'fts',
|
|
220
|
+
sources: []
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
(0, assert_1.default)(query.kind == 'fts');
|
|
224
|
+
let src = query.sources.find(s => s.entity == object.name);
|
|
225
|
+
if (src == null) {
|
|
226
|
+
query.sources.push({
|
|
227
|
+
entity: object.name,
|
|
228
|
+
fields: [f.name]
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
src.fields.push(f.name);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
function isStringField(f) {
|
|
237
|
+
let type = f.type;
|
|
238
|
+
if (type instanceof graphql_1.GraphQLNonNull) {
|
|
239
|
+
type = type.ofType;
|
|
240
|
+
}
|
|
241
|
+
return type instanceof graphql_1.GraphQLScalarType && type.name == 'String';
|
|
242
|
+
}
|
|
243
|
+
function unwrapList(type) {
|
|
244
|
+
let nulls = [];
|
|
245
|
+
while (type instanceof graphql_1.GraphQLList) {
|
|
246
|
+
type = type.ofType;
|
|
247
|
+
if (type instanceof graphql_1.GraphQLNonNull) {
|
|
248
|
+
nulls.push(false);
|
|
249
|
+
type = type.ofType;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
nulls.push(true);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return { item: type, nulls };
|
|
256
|
+
}
|
|
257
|
+
function wrapWithList(nulls, dataType) {
|
|
258
|
+
if (nulls.length == 0)
|
|
259
|
+
return dataType;
|
|
260
|
+
return {
|
|
261
|
+
kind: 'list',
|
|
262
|
+
item: {
|
|
263
|
+
type: wrapWithList(nulls.slice(1), dataType),
|
|
264
|
+
nullable: nulls[0]
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function unsupportedFieldTypeError(type, field) {
|
|
269
|
+
return new Error(`Property ${type}.${field} has unsupported type`);
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/gql/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
ADDED