@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +1 -6
  2. package/dist/cjs/index.cjs +149 -140
  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 +5 -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 +22 -20
  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 +4 -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 +27 -21
  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/unit/resolve.spec.ts +1 -0
  60. package/tests/utils/models.ts +12 -12
  61. package/tests/utils/server.ts +1 -0
@@ -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,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.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;
@@ -60,8 +62,8 @@ export const getModels = (rawModels) => {
60
62
  },
61
63
  {
62
64
  name: 'createdBy',
63
- type: 'relation',
64
- typeName: 'User',
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
- type: 'relation',
85
- typeName: 'User',
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
- default: false,
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
- type: 'relation',
114
- typeName: 'User',
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.type === 'relation' && {
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.type !== 'relation') {
137
+ if (field.kind !== 'relation') {
136
138
  continue;
137
139
  }
138
- const fieldModel = summonByName(models, field.typeName);
140
+ const fieldModel = summonByName(models, field.type);
139
141
  const reverseRelation = {
140
- type: 'relation',
142
+ kind: 'relation',
141
143
  name: field.reverse || (field.toOne ? typeToField(model.name) : getModelPluralField(model)),
142
144
  foreignKey: get(field, 'foreignKey'),
143
- typeName: model.name,
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":"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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;