@smartive/graphql-magic 5.1.2 → 7.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/CHANGELOG.md +1 -6
- package/dist/cjs/index.cjs +149 -140
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +1 -0
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/models.d.ts +1 -0
- package/dist/esm/client/models.js +2 -0
- package/dist/esm/client/models.js.map +1 -0
- package/dist/esm/client/queries.d.ts +2 -2
- package/dist/esm/client/queries.js +3 -3
- package/dist/esm/client/queries.js.map +1 -1
- package/dist/esm/context.d.ts +5 -1
- package/dist/esm/db/generate.js +17 -19
- package/dist/esm/db/generate.js.map +1 -1
- package/dist/esm/migrations/generate.js +69 -57
- package/dist/esm/migrations/generate.js.map +1 -1
- package/dist/esm/models/index.d.ts +1 -0
- package/dist/esm/models/index.js +1 -0
- package/dist/esm/models/index.js.map +1 -1
- package/dist/esm/models/models.d.ts +65 -59
- package/dist/esm/models/mutation-hook.d.ts +17 -0
- package/dist/esm/models/mutation-hook.js +2 -0
- package/dist/esm/models/mutation-hook.js.map +1 -0
- package/dist/esm/models/utils.d.ts +398 -22
- package/dist/esm/models/utils.js +22 -20
- package/dist/esm/models/utils.js.map +1 -1
- package/dist/esm/permissions/check.js +2 -2
- package/dist/esm/permissions/check.js.map +1 -1
- package/dist/esm/resolvers/filters.js +1 -1
- package/dist/esm/resolvers/mutations.js +4 -4
- package/dist/esm/resolvers/mutations.js.map +1 -1
- package/dist/esm/resolvers/node.js +2 -2
- package/dist/esm/resolvers/node.js.map +1 -1
- package/dist/esm/resolvers/resolver.js +1 -1
- package/dist/esm/schema/generate.js +27 -37
- package/dist/esm/schema/generate.js.map +1 -1
- package/dist/esm/schema/utils.d.ts +1 -1
- package/dist/esm/schema/utils.js +2 -2
- package/dist/esm/schema/utils.js.map +1 -1
- package/package.json +5 -5
- package/src/client/index.ts +1 -0
- package/src/client/models.ts +1 -0
- package/src/client/queries.ts +5 -5
- package/src/context.ts +4 -1
- package/src/db/generate.ts +25 -27
- package/src/migrations/generate.ts +69 -57
- package/src/models/index.ts +1 -0
- package/src/models/models.ts +88 -97
- package/src/models/mutation-hook.ts +17 -0
- package/src/models/utils.ts +27 -21
- package/src/permissions/check.ts +2 -2
- package/src/resolvers/filters.ts +1 -1
- package/src/resolvers/mutations.ts +9 -8
- package/src/resolvers/node.ts +2 -2
- package/src/resolvers/resolver.ts +1 -1
- package/src/schema/generate.ts +31 -48
- package/src/schema/utils.ts +3 -3
- package/tests/unit/__snapshots__/generate.spec.ts.snap +2 -2
- package/tests/unit/resolve.spec.ts +1 -0
- package/tests/utils/models.ts +12 -12
- package/tests/utils/server.ts +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Model, ModelField, Models, ObjectModel, PrimitiveField, RawModel, RawModels } from './models';
|
|
2
2
|
export declare const merge: <T>(objects: (false | {
|
|
3
3
|
[name: string]: T;
|
|
4
4
|
})[]) => {
|
|
@@ -11,25 +11,401 @@ export declare const getModelSlug: (model: Model) => string;
|
|
|
11
11
|
export declare const getModelLabelPlural: (model: Model) => string;
|
|
12
12
|
export declare const getModelLabel: (model: Model) => string;
|
|
13
13
|
export declare const getLabel: (s: string) => string;
|
|
14
|
-
export declare const isObjectModel: (model: RawModel) => model is
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
export declare const isObjectModel: (model: RawModel) => model is {
|
|
15
|
+
name: string;
|
|
16
|
+
plural?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
} & {
|
|
19
|
+
kind: "object";
|
|
20
|
+
interfaces?: string[];
|
|
21
|
+
queriable?: boolean;
|
|
22
|
+
listQueriable?: boolean;
|
|
23
|
+
creatable?: boolean | {
|
|
24
|
+
createdBy?: Partial<{
|
|
25
|
+
name: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
directives?: import("..").Directive[];
|
|
28
|
+
defaultValue?: any;
|
|
29
|
+
args?: import("..").Field[];
|
|
30
|
+
list?: boolean;
|
|
31
|
+
nonNull?: boolean;
|
|
32
|
+
} & {
|
|
33
|
+
kind: "relation";
|
|
34
|
+
type: string;
|
|
35
|
+
toOne?: boolean;
|
|
36
|
+
reverse?: string;
|
|
37
|
+
foreignKey?: string;
|
|
38
|
+
onDelete?: "cascade" | "set-null";
|
|
39
|
+
} & {
|
|
40
|
+
primary?: boolean;
|
|
41
|
+
unique?: boolean;
|
|
42
|
+
filterable?: boolean | {
|
|
43
|
+
default?: any;
|
|
44
|
+
};
|
|
45
|
+
searchable?: boolean;
|
|
46
|
+
orderable?: boolean;
|
|
47
|
+
comparable?: boolean;
|
|
48
|
+
queriable?: boolean | {
|
|
49
|
+
roles?: string[];
|
|
50
|
+
};
|
|
51
|
+
creatable?: boolean | {
|
|
52
|
+
roles?: string[];
|
|
53
|
+
};
|
|
54
|
+
updatable?: boolean | {
|
|
55
|
+
roles?: string[];
|
|
56
|
+
};
|
|
57
|
+
generated?: boolean;
|
|
58
|
+
tooltip?: string;
|
|
59
|
+
required?: boolean;
|
|
60
|
+
indent?: boolean;
|
|
61
|
+
hidden?: boolean;
|
|
62
|
+
deleted?: true;
|
|
63
|
+
oldName?: string;
|
|
64
|
+
meta?: Record<string, unknown>;
|
|
65
|
+
}>;
|
|
66
|
+
createdAt?: Partial<{
|
|
67
|
+
name: string;
|
|
68
|
+
description?: string;
|
|
69
|
+
directives?: import("..").Directive[];
|
|
70
|
+
defaultValue?: any;
|
|
71
|
+
args?: import("..").Field[];
|
|
72
|
+
list?: boolean;
|
|
73
|
+
nonNull?: boolean;
|
|
74
|
+
} & {
|
|
75
|
+
kind?: "primitive";
|
|
76
|
+
} & {
|
|
77
|
+
type: "DateTime";
|
|
78
|
+
dateTimeType?: "year" | "date" | "datetime" | "year_and_month";
|
|
79
|
+
endOfDay?: boolean;
|
|
80
|
+
} & {
|
|
81
|
+
primary?: boolean;
|
|
82
|
+
unique?: boolean;
|
|
83
|
+
filterable?: boolean | {
|
|
84
|
+
default?: any;
|
|
85
|
+
};
|
|
86
|
+
searchable?: boolean;
|
|
87
|
+
orderable?: boolean;
|
|
88
|
+
comparable?: boolean;
|
|
89
|
+
queriable?: boolean | {
|
|
90
|
+
roles?: string[];
|
|
91
|
+
};
|
|
92
|
+
creatable?: boolean | {
|
|
93
|
+
roles?: string[];
|
|
94
|
+
};
|
|
95
|
+
updatable?: boolean | {
|
|
96
|
+
roles?: string[];
|
|
97
|
+
};
|
|
98
|
+
generated?: boolean;
|
|
99
|
+
tooltip?: string;
|
|
100
|
+
required?: boolean;
|
|
101
|
+
indent?: boolean;
|
|
102
|
+
hidden?: boolean;
|
|
103
|
+
deleted?: true;
|
|
104
|
+
oldName?: string;
|
|
105
|
+
meta?: Record<string, unknown>;
|
|
106
|
+
}>;
|
|
107
|
+
};
|
|
108
|
+
updatable?: boolean | {
|
|
109
|
+
updatedBy?: Partial<{
|
|
110
|
+
name: string;
|
|
111
|
+
description?: string;
|
|
112
|
+
directives?: import("..").Directive[];
|
|
113
|
+
defaultValue?: any;
|
|
114
|
+
args?: import("..").Field[];
|
|
115
|
+
list?: boolean;
|
|
116
|
+
nonNull?: boolean;
|
|
117
|
+
} & {
|
|
118
|
+
kind: "relation";
|
|
119
|
+
type: string;
|
|
120
|
+
toOne?: boolean;
|
|
121
|
+
reverse?: string;
|
|
122
|
+
foreignKey?: string;
|
|
123
|
+
onDelete?: "cascade" | "set-null";
|
|
124
|
+
} & {
|
|
125
|
+
primary?: boolean;
|
|
126
|
+
unique?: boolean;
|
|
127
|
+
filterable?: boolean | {
|
|
128
|
+
default?: any;
|
|
129
|
+
};
|
|
130
|
+
searchable?: boolean;
|
|
131
|
+
orderable?: boolean;
|
|
132
|
+
comparable?: boolean;
|
|
133
|
+
queriable?: boolean | {
|
|
134
|
+
roles?: string[];
|
|
135
|
+
};
|
|
136
|
+
creatable?: boolean | {
|
|
137
|
+
roles?: string[];
|
|
138
|
+
};
|
|
139
|
+
updatable?: boolean | {
|
|
140
|
+
roles?: string[];
|
|
141
|
+
};
|
|
142
|
+
generated?: boolean;
|
|
143
|
+
tooltip?: string;
|
|
144
|
+
required?: boolean;
|
|
145
|
+
indent?: boolean;
|
|
146
|
+
hidden?: boolean;
|
|
147
|
+
deleted?: true;
|
|
148
|
+
oldName?: string;
|
|
149
|
+
meta?: Record<string, unknown>;
|
|
150
|
+
}>;
|
|
151
|
+
updatedAt?: Partial<{
|
|
152
|
+
name: string;
|
|
153
|
+
description?: string;
|
|
154
|
+
directives?: import("..").Directive[];
|
|
155
|
+
defaultValue?: any;
|
|
156
|
+
args?: import("..").Field[];
|
|
157
|
+
list?: boolean;
|
|
158
|
+
nonNull?: boolean;
|
|
159
|
+
} & {
|
|
160
|
+
kind?: "primitive";
|
|
161
|
+
} & {
|
|
162
|
+
type: "DateTime";
|
|
163
|
+
dateTimeType?: "year" | "date" | "datetime" | "year_and_month";
|
|
164
|
+
endOfDay?: boolean;
|
|
165
|
+
} & {
|
|
166
|
+
primary?: boolean;
|
|
167
|
+
unique?: boolean;
|
|
168
|
+
filterable?: boolean | {
|
|
169
|
+
default?: any;
|
|
170
|
+
};
|
|
171
|
+
searchable?: boolean;
|
|
172
|
+
orderable?: boolean;
|
|
173
|
+
comparable?: boolean;
|
|
174
|
+
queriable?: boolean | {
|
|
175
|
+
roles?: string[];
|
|
176
|
+
};
|
|
177
|
+
creatable?: boolean | {
|
|
178
|
+
roles?: string[];
|
|
179
|
+
};
|
|
180
|
+
updatable?: boolean | {
|
|
181
|
+
roles?: string[];
|
|
182
|
+
};
|
|
183
|
+
generated?: boolean;
|
|
184
|
+
tooltip?: string;
|
|
185
|
+
required?: boolean;
|
|
186
|
+
indent?: boolean;
|
|
187
|
+
hidden?: boolean;
|
|
188
|
+
deleted?: true;
|
|
189
|
+
oldName?: string;
|
|
190
|
+
meta?: Record<string, unknown>;
|
|
191
|
+
}>;
|
|
192
|
+
};
|
|
193
|
+
deletable?: boolean | {
|
|
194
|
+
deleted?: Partial<{
|
|
195
|
+
name: string;
|
|
196
|
+
description?: string;
|
|
197
|
+
directives?: import("..").Directive[];
|
|
198
|
+
defaultValue?: any;
|
|
199
|
+
args?: import("..").Field[];
|
|
200
|
+
list?: boolean;
|
|
201
|
+
nonNull?: boolean;
|
|
202
|
+
} & {
|
|
203
|
+
kind?: "primitive";
|
|
204
|
+
} & {
|
|
205
|
+
type: "Boolean";
|
|
206
|
+
} & {
|
|
207
|
+
primary?: boolean;
|
|
208
|
+
unique?: boolean;
|
|
209
|
+
filterable?: boolean | {
|
|
210
|
+
default?: any;
|
|
211
|
+
};
|
|
212
|
+
searchable?: boolean;
|
|
213
|
+
orderable?: boolean;
|
|
214
|
+
comparable?: boolean;
|
|
215
|
+
queriable?: boolean | {
|
|
216
|
+
roles?: string[];
|
|
217
|
+
};
|
|
218
|
+
creatable?: boolean | {
|
|
219
|
+
roles?: string[];
|
|
220
|
+
};
|
|
221
|
+
updatable?: boolean | {
|
|
222
|
+
roles?: string[];
|
|
223
|
+
};
|
|
224
|
+
generated?: boolean;
|
|
225
|
+
tooltip?: string;
|
|
226
|
+
required?: boolean;
|
|
227
|
+
indent?: boolean;
|
|
228
|
+
hidden?: boolean;
|
|
229
|
+
deleted?: true;
|
|
230
|
+
oldName?: string;
|
|
231
|
+
meta?: Record<string, unknown>;
|
|
232
|
+
}>;
|
|
233
|
+
deletedBy?: Partial<{
|
|
234
|
+
name: string;
|
|
235
|
+
description?: string;
|
|
236
|
+
directives?: import("..").Directive[];
|
|
237
|
+
defaultValue?: any;
|
|
238
|
+
args?: import("..").Field[];
|
|
239
|
+
list?: boolean;
|
|
240
|
+
nonNull?: boolean;
|
|
241
|
+
} & {
|
|
242
|
+
kind: "relation";
|
|
243
|
+
type: string;
|
|
244
|
+
toOne?: boolean;
|
|
245
|
+
reverse?: string;
|
|
246
|
+
foreignKey?: string;
|
|
247
|
+
onDelete?: "cascade" | "set-null";
|
|
248
|
+
} & {
|
|
249
|
+
primary?: boolean;
|
|
250
|
+
unique?: boolean;
|
|
251
|
+
filterable?: boolean | {
|
|
252
|
+
default?: any;
|
|
253
|
+
};
|
|
254
|
+
searchable?: boolean;
|
|
255
|
+
orderable?: boolean;
|
|
256
|
+
comparable?: boolean;
|
|
257
|
+
queriable?: boolean | {
|
|
258
|
+
roles?: string[];
|
|
259
|
+
};
|
|
260
|
+
creatable?: boolean | {
|
|
261
|
+
roles?: string[];
|
|
262
|
+
};
|
|
263
|
+
updatable?: boolean | {
|
|
264
|
+
roles?: string[];
|
|
265
|
+
};
|
|
266
|
+
generated?: boolean;
|
|
267
|
+
tooltip?: string;
|
|
268
|
+
required?: boolean;
|
|
269
|
+
indent?: boolean;
|
|
270
|
+
hidden?: boolean;
|
|
271
|
+
deleted?: true;
|
|
272
|
+
oldName?: string;
|
|
273
|
+
meta?: Record<string, unknown>;
|
|
274
|
+
}>;
|
|
275
|
+
deletedAt?: Partial<{
|
|
276
|
+
name: string;
|
|
277
|
+
description?: string;
|
|
278
|
+
directives?: import("..").Directive[];
|
|
279
|
+
defaultValue?: any;
|
|
280
|
+
args?: import("..").Field[];
|
|
281
|
+
list?: boolean;
|
|
282
|
+
nonNull?: boolean;
|
|
283
|
+
} & {
|
|
284
|
+
kind?: "primitive";
|
|
285
|
+
} & {
|
|
286
|
+
type: "DateTime";
|
|
287
|
+
dateTimeType?: "year" | "date" | "datetime" | "year_and_month";
|
|
288
|
+
endOfDay?: boolean;
|
|
289
|
+
} & {
|
|
290
|
+
primary?: boolean;
|
|
291
|
+
unique?: boolean;
|
|
292
|
+
filterable?: boolean | {
|
|
293
|
+
default?: any;
|
|
294
|
+
};
|
|
295
|
+
searchable?: boolean;
|
|
296
|
+
orderable?: boolean;
|
|
297
|
+
comparable?: boolean;
|
|
298
|
+
queriable?: boolean | {
|
|
299
|
+
roles?: string[];
|
|
300
|
+
};
|
|
301
|
+
creatable?: boolean | {
|
|
302
|
+
roles?: string[];
|
|
303
|
+
};
|
|
304
|
+
updatable?: boolean | {
|
|
305
|
+
roles?: string[];
|
|
306
|
+
};
|
|
307
|
+
generated?: boolean;
|
|
308
|
+
tooltip?: string;
|
|
309
|
+
required?: boolean;
|
|
310
|
+
indent?: boolean;
|
|
311
|
+
hidden?: boolean;
|
|
312
|
+
deleted?: true;
|
|
313
|
+
oldName?: string;
|
|
314
|
+
meta?: Record<string, unknown>;
|
|
315
|
+
}>;
|
|
316
|
+
};
|
|
317
|
+
displayField?: string;
|
|
318
|
+
defaultOrderBy?: import("..").OrderBy;
|
|
319
|
+
fields: ModelField[];
|
|
320
|
+
deleted?: true;
|
|
321
|
+
oldName?: string;
|
|
322
|
+
};
|
|
323
|
+
export declare const isEnumModel: (model: RawModel) => model is {
|
|
324
|
+
name: string;
|
|
325
|
+
plural?: string;
|
|
326
|
+
description?: string;
|
|
327
|
+
} & {
|
|
328
|
+
kind: "enum";
|
|
329
|
+
values: string[];
|
|
330
|
+
deleted?: true;
|
|
331
|
+
};
|
|
332
|
+
export declare const isRawEnumModel: (model: RawModel) => model is {
|
|
333
|
+
name: string;
|
|
334
|
+
plural?: string;
|
|
335
|
+
description?: string;
|
|
336
|
+
} & {
|
|
337
|
+
kind: "raw-enum";
|
|
338
|
+
values: string[];
|
|
339
|
+
};
|
|
340
|
+
export declare const isScalarModel: (model: RawModel) => model is {
|
|
341
|
+
name: string;
|
|
342
|
+
plural?: string;
|
|
343
|
+
description?: string;
|
|
344
|
+
} & {
|
|
345
|
+
kind: "scalar";
|
|
346
|
+
};
|
|
347
|
+
export declare const isRawObjectModel: (model: RawModel) => model is {
|
|
348
|
+
name: string;
|
|
349
|
+
plural?: string;
|
|
350
|
+
description?: string;
|
|
351
|
+
} & {
|
|
352
|
+
kind: "raw";
|
|
353
|
+
fields: import("./models").RawObjectField[];
|
|
354
|
+
};
|
|
19
355
|
export declare const isEnumList: (models: RawModels, field: ModelField) => boolean;
|
|
20
356
|
export declare const and: (...predicates: ((field: ModelField) => boolean)[]) => (field: ModelField) => boolean;
|
|
21
357
|
export declare const not: (predicate: (field: ModelField) => boolean) => (field: ModelField) => boolean;
|
|
358
|
+
export declare const isPrimitive: (field: ModelField) => field is PrimitiveField;
|
|
359
|
+
export declare const isEnum: (field: ModelField) => field is {
|
|
360
|
+
name: string;
|
|
361
|
+
description?: string;
|
|
362
|
+
directives?: import("..").Directive[];
|
|
363
|
+
defaultValue?: any;
|
|
364
|
+
args?: import("..").Field[];
|
|
365
|
+
list?: boolean;
|
|
366
|
+
nonNull?: boolean;
|
|
367
|
+
} & {
|
|
368
|
+
kind: "enum";
|
|
369
|
+
type: string;
|
|
370
|
+
possibleValues?: any[];
|
|
371
|
+
} & {
|
|
372
|
+
primary?: boolean;
|
|
373
|
+
unique?: boolean;
|
|
374
|
+
filterable?: boolean | {
|
|
375
|
+
default?: any;
|
|
376
|
+
};
|
|
377
|
+
searchable?: boolean;
|
|
378
|
+
orderable?: boolean;
|
|
379
|
+
comparable?: boolean;
|
|
380
|
+
queriable?: boolean | {
|
|
381
|
+
roles?: string[];
|
|
382
|
+
};
|
|
383
|
+
creatable?: boolean | {
|
|
384
|
+
roles?: string[];
|
|
385
|
+
};
|
|
386
|
+
updatable?: boolean | {
|
|
387
|
+
roles?: string[];
|
|
388
|
+
};
|
|
389
|
+
generated?: boolean;
|
|
390
|
+
tooltip?: string;
|
|
391
|
+
required?: boolean;
|
|
392
|
+
indent?: boolean;
|
|
393
|
+
hidden?: boolean;
|
|
394
|
+
deleted?: true;
|
|
395
|
+
oldName?: string;
|
|
396
|
+
meta?: Record<string, unknown>;
|
|
397
|
+
};
|
|
22
398
|
export declare const isRelation: (field: ModelField) => field is {
|
|
23
|
-
default?: any;
|
|
24
399
|
name: string;
|
|
25
400
|
description?: string;
|
|
26
401
|
directives?: import("..").Directive[];
|
|
402
|
+
defaultValue?: any;
|
|
27
403
|
args?: import("..").Field[];
|
|
28
404
|
list?: boolean;
|
|
29
405
|
nonNull?: boolean;
|
|
30
406
|
} & {
|
|
31
|
-
|
|
32
|
-
|
|
407
|
+
kind: "relation";
|
|
408
|
+
type: string;
|
|
33
409
|
toOne?: boolean;
|
|
34
410
|
reverse?: string;
|
|
35
411
|
foreignKey?: string;
|
|
@@ -54,24 +430,24 @@ export declare const isRelation: (field: ModelField) => field is {
|
|
|
54
430
|
};
|
|
55
431
|
generated?: boolean;
|
|
56
432
|
tooltip?: string;
|
|
57
|
-
defaultValue?: string | number | readonly string[];
|
|
58
433
|
required?: boolean;
|
|
59
434
|
indent?: boolean;
|
|
60
435
|
hidden?: boolean;
|
|
61
436
|
deleted?: true;
|
|
62
437
|
oldName?: string;
|
|
438
|
+
meta?: Record<string, unknown>;
|
|
63
439
|
};
|
|
64
440
|
export declare const isToOneRelation: (field: ModelField) => field is {
|
|
65
|
-
default?: any;
|
|
66
441
|
name: string;
|
|
67
442
|
description?: string;
|
|
68
443
|
directives?: import("..").Directive[];
|
|
444
|
+
defaultValue?: any;
|
|
69
445
|
args?: import("..").Field[];
|
|
70
446
|
list?: boolean;
|
|
71
447
|
nonNull?: boolean;
|
|
72
448
|
} & {
|
|
73
|
-
|
|
74
|
-
|
|
449
|
+
kind: "relation";
|
|
450
|
+
type: string;
|
|
75
451
|
toOne?: boolean;
|
|
76
452
|
reverse?: string;
|
|
77
453
|
foreignKey?: string;
|
|
@@ -96,25 +472,25 @@ export declare const isToOneRelation: (field: ModelField) => field is {
|
|
|
96
472
|
};
|
|
97
473
|
generated?: boolean;
|
|
98
474
|
tooltip?: string;
|
|
99
|
-
defaultValue?: string | number | readonly string[];
|
|
100
475
|
required?: boolean;
|
|
101
476
|
indent?: boolean;
|
|
102
477
|
hidden?: boolean;
|
|
103
478
|
deleted?: true;
|
|
104
479
|
oldName?: string;
|
|
480
|
+
meta?: Record<string, unknown>;
|
|
105
481
|
};
|
|
106
482
|
export declare const isQueriableField: ({ queriable }: ModelField) => boolean;
|
|
107
483
|
export declare const isRaw: (field: ModelField) => field is {
|
|
108
|
-
default?: any;
|
|
109
484
|
name: string;
|
|
110
485
|
description?: string;
|
|
111
486
|
directives?: import("..").Directive[];
|
|
487
|
+
defaultValue?: any;
|
|
112
488
|
args?: import("..").Field[];
|
|
113
489
|
list?: boolean;
|
|
114
490
|
nonNull?: boolean;
|
|
115
491
|
} & {
|
|
116
|
-
|
|
117
|
-
|
|
492
|
+
kind: "raw";
|
|
493
|
+
type: string;
|
|
118
494
|
} & {
|
|
119
495
|
primary?: boolean;
|
|
120
496
|
unique?: boolean;
|
|
@@ -135,12 +511,12 @@ export declare const isRaw: (field: ModelField) => field is {
|
|
|
135
511
|
};
|
|
136
512
|
generated?: boolean;
|
|
137
513
|
tooltip?: string;
|
|
138
|
-
defaultValue?: string | number | readonly string[];
|
|
139
514
|
required?: boolean;
|
|
140
515
|
indent?: boolean;
|
|
141
516
|
hidden?: boolean;
|
|
142
517
|
deleted?: true;
|
|
143
518
|
oldName?: string;
|
|
519
|
+
meta?: Record<string, unknown>;
|
|
144
520
|
};
|
|
145
521
|
export declare const isVisible: ({ hidden }: ModelField) => boolean;
|
|
146
522
|
export declare const isSimpleField: (field: ModelField) => boolean;
|
|
@@ -150,16 +526,16 @@ export declare const isQueriableBy: (role: string) => (field: ModelField) => boo
|
|
|
150
526
|
export declare const isUpdatableBy: (role: string) => (field: ModelField) => boolean;
|
|
151
527
|
export declare const isCreatableBy: (role: string) => (field: ModelField) => boolean;
|
|
152
528
|
export declare const actionableRelations: (model: Model, action: 'create' | 'update' | 'filter') => ({
|
|
153
|
-
default?: any;
|
|
154
529
|
name: string;
|
|
155
530
|
description?: string;
|
|
156
531
|
directives?: import("..").Directive[];
|
|
532
|
+
defaultValue?: any;
|
|
157
533
|
args?: import("..").Field[];
|
|
158
534
|
list?: boolean;
|
|
159
535
|
nonNull?: boolean;
|
|
160
536
|
} & {
|
|
161
|
-
|
|
162
|
-
|
|
537
|
+
kind: "relation";
|
|
538
|
+
type: string;
|
|
163
539
|
toOne?: boolean;
|
|
164
540
|
reverse?: string;
|
|
165
541
|
foreignKey?: string;
|
|
@@ -184,12 +560,12 @@ export declare const actionableRelations: (model: Model, action: 'create' | 'upd
|
|
|
184
560
|
};
|
|
185
561
|
generated?: boolean;
|
|
186
562
|
tooltip?: string;
|
|
187
|
-
defaultValue?: string | number | readonly string[];
|
|
188
563
|
required?: boolean;
|
|
189
564
|
indent?: boolean;
|
|
190
565
|
hidden?: boolean;
|
|
191
566
|
deleted?: true;
|
|
192
567
|
oldName?: string;
|
|
568
|
+
meta?: Record<string, unknown>;
|
|
193
569
|
})[];
|
|
194
570
|
export declare const getModels: (rawModels: RawModels) => Models;
|
|
195
571
|
export declare const summonByName: <T extends {
|
package/dist/esm/models/utils.js
CHANGED
|
@@ -14,18 +14,20 @@ export const getModelSlug = (model) => kebabCase(getModelPlural(model));
|
|
|
14
14
|
export const getModelLabelPlural = (model) => getLabel(getModelPlural(model));
|
|
15
15
|
export const getModelLabel = (model) => getLabel(model.name);
|
|
16
16
|
export const getLabel = (s) => startCase(camelCase(s));
|
|
17
|
-
export const isObjectModel = (model) => model.
|
|
18
|
-
export const isEnumModel = (model) => model.
|
|
19
|
-
export const isRawEnumModel = (model) => model.
|
|
20
|
-
export const isScalarModel = (model) => model.
|
|
21
|
-
export const isRawObjectModel = (model) => model.
|
|
22
|
-
export const isEnumList = (models, field) => field?.list === true && models.find(({ name }) => name === field.
|
|
17
|
+
export const isObjectModel = (model) => model.kind === 'object';
|
|
18
|
+
export const isEnumModel = (model) => model.kind === 'enum';
|
|
19
|
+
export const isRawEnumModel = (model) => model.kind === 'raw-enum';
|
|
20
|
+
export const isScalarModel = (model) => model.kind === 'scalar';
|
|
21
|
+
export const isRawObjectModel = (model) => model.kind === 'raw';
|
|
22
|
+
export const isEnumList = (models, field) => field?.list === true && models.find(({ name }) => name === field.kind)?.kind === 'enum';
|
|
23
23
|
export const and = (...predicates) => (field) => predicates.every((predicate) => predicate(field));
|
|
24
24
|
export const not = (predicate) => (field) => !predicate(field);
|
|
25
|
-
export const
|
|
25
|
+
export const isPrimitive = (field) => field.kind === undefined || field.kind === 'primitive';
|
|
26
|
+
export const isEnum = (field) => field.kind === 'enum';
|
|
27
|
+
export const isRelation = (field) => field.kind === 'relation';
|
|
26
28
|
export const isToOneRelation = (field) => isRelation(field) && !!field.toOne;
|
|
27
29
|
export const isQueriableField = ({ queriable }) => queriable !== false;
|
|
28
|
-
export const isRaw = (field) => field.
|
|
30
|
+
export const isRaw = (field) => field.kind === 'raw';
|
|
29
31
|
export const isVisible = ({ hidden }) => hidden !== true;
|
|
30
32
|
export const isSimpleField = and(not(isRelation), not(isRaw));
|
|
31
33
|
export const isUpdatable = ({ updatable }) => !!updatable;
|
|
@@ -60,8 +62,8 @@ export const getModels = (rawModels) => {
|
|
|
60
62
|
},
|
|
61
63
|
{
|
|
62
64
|
name: 'createdBy',
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
kind: 'relation',
|
|
66
|
+
type: 'User',
|
|
65
67
|
nonNull: true,
|
|
66
68
|
reverse: `created${getModelPlural(model)}`,
|
|
67
69
|
generated: true,
|
|
@@ -81,8 +83,8 @@ export const getModels = (rawModels) => {
|
|
|
81
83
|
},
|
|
82
84
|
{
|
|
83
85
|
name: 'updatedBy',
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
kind: 'relation',
|
|
87
|
+
type: 'User',
|
|
86
88
|
nonNull: true,
|
|
87
89
|
reverse: `updated${getModelPlural(model)}`,
|
|
88
90
|
generated: true,
|
|
@@ -96,7 +98,7 @@ export const getModels = (rawModels) => {
|
|
|
96
98
|
name: 'deleted',
|
|
97
99
|
type: 'Boolean',
|
|
98
100
|
nonNull: true,
|
|
99
|
-
|
|
101
|
+
defaultValue: false,
|
|
100
102
|
filterable: { default: false },
|
|
101
103
|
generated: true,
|
|
102
104
|
...(typeof model.deletable === 'object' && model.deletable.deleted),
|
|
@@ -110,8 +112,8 @@ export const getModels = (rawModels) => {
|
|
|
110
112
|
},
|
|
111
113
|
{
|
|
112
114
|
name: 'deletedBy',
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
kind: 'relation',
|
|
116
|
+
type: 'User',
|
|
115
117
|
reverse: `deleted${getModelPlural(model)}`,
|
|
116
118
|
generated: true,
|
|
117
119
|
...(typeof model.deletable === 'object' && model.deletable.deletedBy),
|
|
@@ -120,7 +122,7 @@ export const getModels = (rawModels) => {
|
|
|
120
122
|
: []),
|
|
121
123
|
]).map((field) => ({
|
|
122
124
|
...field,
|
|
123
|
-
...(field.
|
|
125
|
+
...(field.kind === 'relation' && {
|
|
124
126
|
foreignKey: field.foreignKey || `${field.name}Id`,
|
|
125
127
|
}),
|
|
126
128
|
})),
|
|
@@ -132,15 +134,15 @@ export const getModels = (rawModels) => {
|
|
|
132
134
|
});
|
|
133
135
|
for (const model of models) {
|
|
134
136
|
for (const field of model.fields) {
|
|
135
|
-
if (field.
|
|
137
|
+
if (field.kind !== 'relation') {
|
|
136
138
|
continue;
|
|
137
139
|
}
|
|
138
|
-
const fieldModel = summonByName(models, field.
|
|
140
|
+
const fieldModel = summonByName(models, field.type);
|
|
139
141
|
const reverseRelation = {
|
|
140
|
-
|
|
142
|
+
kind: 'relation',
|
|
141
143
|
name: field.reverse || (field.toOne ? typeToField(model.name) : getModelPluralField(model)),
|
|
142
144
|
foreignKey: get(field, 'foreignKey'),
|
|
143
|
-
|
|
145
|
+
type: model.name,
|
|
144
146
|
toOne: !!field.toOne,
|
|
145
147
|
fieldModel,
|
|
146
148
|
field,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/models/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,SAAS,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/models/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,8 +85,8 @@ export const checkCanWrite = async (ctx, model, data, action) => {
|
|
|
85
85
|
if (!foreignId) {
|
|
86
86
|
continue;
|
|
87
87
|
}
|
|
88
|
-
const fieldPermissions = field[action === 'CREATE' ? '
|
|
89
|
-
if (fieldPermissions && !fieldPermissions.includes(ctx.user.role)) {
|
|
88
|
+
const fieldPermissions = field[action === 'CREATE' ? 'creatable' : 'updatable'];
|
|
89
|
+
if (fieldPermissions && typeof fieldPermissions === 'object' && !fieldPermissions.roles?.includes(ctx.user.role)) {
|
|
90
90
|
throw new PermissionError(action, `this ${model.name}'s ${field.name}`, 'field permission not available');
|
|
91
91
|
}
|
|
92
92
|
linked = true;
|