@smartive/graphql-magic 6.0.0 → 7.0.1

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/cjs/index.cjs +150 -141
  3. package/dist/esm/client/index.d.ts +1 -0
  4. package/dist/esm/client/index.js +1 -0
  5. package/dist/esm/client/index.js.map +1 -1
  6. package/dist/esm/client/models.d.ts +1 -0
  7. package/dist/esm/client/models.js +2 -0
  8. package/dist/esm/client/models.js.map +1 -0
  9. package/dist/esm/client/queries.d.ts +2 -2
  10. package/dist/esm/client/queries.js +3 -3
  11. package/dist/esm/client/queries.js.map +1 -1
  12. package/dist/esm/context.d.ts +2 -1
  13. package/dist/esm/db/generate.js +17 -19
  14. package/dist/esm/db/generate.js.map +1 -1
  15. package/dist/esm/migrations/generate.js +69 -57
  16. package/dist/esm/migrations/generate.js.map +1 -1
  17. package/dist/esm/models/index.d.ts +1 -0
  18. package/dist/esm/models/index.js +1 -0
  19. package/dist/esm/models/index.js.map +1 -1
  20. package/dist/esm/models/models.d.ts +65 -59
  21. package/dist/esm/models/mutation-hook.d.ts +17 -0
  22. package/dist/esm/models/mutation-hook.js +2 -0
  23. package/dist/esm/models/mutation-hook.js.map +1 -0
  24. package/dist/esm/models/utils.d.ts +398 -22
  25. package/dist/esm/models/utils.js +27 -21
  26. package/dist/esm/models/utils.js.map +1 -1
  27. package/dist/esm/permissions/check.js +2 -2
  28. package/dist/esm/permissions/check.js.map +1 -1
  29. package/dist/esm/resolvers/filters.js +1 -1
  30. package/dist/esm/resolvers/mutations.js +4 -4
  31. package/dist/esm/resolvers/mutations.js.map +1 -1
  32. package/dist/esm/resolvers/node.js +2 -2
  33. package/dist/esm/resolvers/node.js.map +1 -1
  34. package/dist/esm/resolvers/resolver.js +1 -1
  35. package/dist/esm/schema/generate.js +27 -37
  36. package/dist/esm/schema/generate.js.map +1 -1
  37. package/dist/esm/schema/utils.d.ts +1 -1
  38. package/dist/esm/schema/utils.js +2 -2
  39. package/dist/esm/schema/utils.js.map +1 -1
  40. package/package.json +5 -5
  41. package/src/client/index.ts +1 -0
  42. package/src/client/models.ts +1 -0
  43. package/src/client/queries.ts +5 -5
  44. package/src/context.ts +2 -1
  45. package/src/db/generate.ts +25 -27
  46. package/src/migrations/generate.ts +69 -57
  47. package/src/models/index.ts +1 -0
  48. package/src/models/models.ts +88 -97
  49. package/src/models/mutation-hook.ts +17 -0
  50. package/src/models/utils.ts +32 -22
  51. package/src/permissions/check.ts +2 -2
  52. package/src/resolvers/filters.ts +1 -1
  53. package/src/resolvers/mutations.ts +9 -8
  54. package/src/resolvers/node.ts +2 -2
  55. package/src/resolvers/resolver.ts +1 -1
  56. package/src/schema/generate.ts +31 -48
  57. package/src/schema/utils.ts +3 -3
  58. package/tests/unit/__snapshots__/generate.spec.ts.snap +2 -2
  59. package/tests/utils/models.ts +12 -12
@@ -1,4 +1,4 @@
1
- import { EnumModel, Model, ModelField, Models, ObjectModel, RawEnumModel, RawModel, RawModels, RawObjectModel, ScalarModel } from './models';
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 ObjectModel;
15
- export declare const isEnumModel: (model: RawModel) => model is EnumModel;
16
- export declare const isRawEnumModel: (model: RawModel) => model is RawEnumModel;
17
- export declare const isScalarModel: (model: RawModel) => model is ScalarModel;
18
- export declare const isRawObjectModel: (model: RawModel) => model is RawObjectModel;
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
- type: "relation";
32
- typeName: string;
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
- type: "relation";
74
- typeName: string;
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
- type: "raw";
117
- typeName: string;
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
- type: "relation";
162
- typeName: string;
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 {
@@ -14,23 +14,29 @@ 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.type === 'object';
18
- export const isEnumModel = (model) => model.type === 'enum';
19
- export const isRawEnumModel = (model) => model.type === 'raw-enum';
20
- export const isScalarModel = (model) => model.type === 'scalar';
21
- export const isRawObjectModel = (model) => model.type === 'raw';
22
- export const isEnumList = (models, field) => field?.list === true && models.find(({ name }) => name === field.type)?.type === 'enum';
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 isRelation = (field) => field.type === 'relation';
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.type === 'raw';
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;
32
34
  export const isCreatable = ({ creatable }) => !!creatable;
33
- export const isQueriableBy = (role) => (field) => field.queriable !== false && (field.queriable == true || !field.queriable.roles || field.queriable.roles.includes(role));
35
+ export const isQueriableBy = (role) => (field) => field.queriable !== false &&
36
+ (field.queriable === undefined ||
37
+ field.queriable === true ||
38
+ !field.queriable.roles ||
39
+ field.queriable.roles.includes(role));
34
40
  export const isUpdatableBy = (role) => (field) => field.updatable && (field.updatable === true || !field.updatable.roles || field.updatable.roles.includes(role));
35
41
  export const isCreatableBy = (role) => (field) => field.creatable && (field.creatable === true || !field.creatable.roles || field.creatable.roles.includes(role));
36
42
  export const actionableRelations = (model, action) => model.fields
@@ -60,8 +66,8 @@ export const getModels = (rawModels) => {
60
66
  },
61
67
  {
62
68
  name: 'createdBy',
63
- type: 'relation',
64
- typeName: 'User',
69
+ kind: 'relation',
70
+ type: 'User',
65
71
  nonNull: true,
66
72
  reverse: `created${getModelPlural(model)}`,
67
73
  generated: true,
@@ -81,8 +87,8 @@ export const getModels = (rawModels) => {
81
87
  },
82
88
  {
83
89
  name: 'updatedBy',
84
- type: 'relation',
85
- typeName: 'User',
90
+ kind: 'relation',
91
+ type: 'User',
86
92
  nonNull: true,
87
93
  reverse: `updated${getModelPlural(model)}`,
88
94
  generated: true,
@@ -96,7 +102,7 @@ export const getModels = (rawModels) => {
96
102
  name: 'deleted',
97
103
  type: 'Boolean',
98
104
  nonNull: true,
99
- default: false,
105
+ defaultValue: false,
100
106
  filterable: { default: false },
101
107
  generated: true,
102
108
  ...(typeof model.deletable === 'object' && model.deletable.deleted),
@@ -110,8 +116,8 @@ export const getModels = (rawModels) => {
110
116
  },
111
117
  {
112
118
  name: 'deletedBy',
113
- type: 'relation',
114
- typeName: 'User',
119
+ kind: 'relation',
120
+ type: 'User',
115
121
  reverse: `deleted${getModelPlural(model)}`,
116
122
  generated: true,
117
123
  ...(typeof model.deletable === 'object' && model.deletable.deletedBy),
@@ -120,7 +126,7 @@ export const getModels = (rawModels) => {
120
126
  : []),
121
127
  ]).map((field) => ({
122
128
  ...field,
123
- ...(field.type === 'relation' && {
129
+ ...(field.kind === 'relation' && {
124
130
  foreignKey: field.foreignKey || `${field.name}Id`,
125
131
  }),
126
132
  })),
@@ -132,15 +138,15 @@ export const getModels = (rawModels) => {
132
138
  });
133
139
  for (const model of models) {
134
140
  for (const field of model.fields) {
135
- if (field.type !== 'relation') {
141
+ if (field.kind !== 'relation') {
136
142
  continue;
137
143
  }
138
- const fieldModel = summonByName(models, field.typeName);
144
+ const fieldModel = summonByName(models, field.type);
139
145
  const reverseRelation = {
140
- type: 'relation',
146
+ kind: 'relation',
141
147
  name: field.reverse || (field.toOne ? typeToField(model.name) : getModelPluralField(model)),
142
148
  foreignKey: get(field, 'foreignKey'),
143
- typeName: model.name,
149
+ type: model.name,
144
150
  toOne: !!field.toOne,
145
151
  fieldModel,
146
152
  field,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/models/utils.ts"],"names":[],"mappings":"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"}
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' ? 'creatableBy' : 'updatableBy'];
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;