@smartive/graphql-magic 11.3.0 → 13.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 CHANGED
@@ -1,6 +1 @@
1
- # [11.3.0](https://github.com/smartive/graphql-magic/compare/v11.2.0...v11.3.0) (2023-12-20)
2
-
3
-
4
- ### Features
5
-
6
- * Reverse filter none ([b5c1478](https://github.com/smartive/graphql-magic/commit/b5c14787b97b72b2891ae2705f9675651ebd3542))
1
+ # [13.0.0](https://github.com/smartive/graphql-magic/compare/v12.0.0...v13.0.0) (2024-02-08)
package/dist/bin/gqm.cjs CHANGED
@@ -87,9 +87,6 @@ var generateMutations = (models, gqmModule = "@smartive/graphql-magic") => {
87
87
  ${parts.join("\n\n")}`;
88
88
  };
89
89
 
90
- // src/client/queries.ts
91
- var import_upperFirst = __toESM(require("lodash/upperFirst"), 1);
92
-
93
90
  // src/models/utils.ts
94
91
  var import_lodash3 = require("lodash");
95
92
  var import_get = __toESM(require("lodash/get"), 1);
@@ -52,7 +52,6 @@ __export(src_exports, {
52
52
  ScalarModel: () => ScalarModel,
53
53
  TYPE_ALIAS: () => TYPE_ALIAS,
54
54
  UserInputError: () => UserInputError,
55
- actionableRelations: () => actionableRelations,
56
55
  addJoin: () => addJoin,
57
56
  and: () => and,
58
57
  apply: () => apply,
@@ -68,6 +67,7 @@ __export(src_exports, {
68
67
  document: () => document,
69
68
  enm: () => enm,
70
69
  execute: () => execute,
70
+ fieldIsSearchable: () => fieldIsSearchable,
71
71
  fieldType: () => fieldType,
72
72
  fields: () => fields,
73
73
  generate: () => generate,
@@ -77,9 +77,9 @@ __export(src_exports, {
77
77
  generateMutations: () => generateMutations,
78
78
  generatePermissions: () => generatePermissions,
79
79
  get: () => get,
80
+ getActionableRelations: () => getActionableRelations,
80
81
  getColumn: () => getColumn,
81
82
  getColumnName: () => getColumnName,
82
- getEditEntityRelationsQuery: () => getEditEntityRelationsQuery,
83
83
  getEntityListQuery: () => getEntityListQuery,
84
84
  getEntityQuery: () => getEntityQuery,
85
85
  getEntityToMutate: () => getEntityToMutate,
@@ -97,6 +97,7 @@ __export(src_exports, {
97
97
  getResolverNode: () => getResolverNode,
98
98
  getResolvers: () => getResolvers,
99
99
  getRootFieldNode: () => getRootFieldNode,
100
+ getSelectEntityRelationsQuery: () => getSelectEntityRelationsQuery,
100
101
  getSimpleFields: () => getSimpleFields,
101
102
  getString: () => getString,
102
103
  getType: () => getType,
@@ -267,9 +268,6 @@ var generateMutations = (models, gqmModule = "@smartive/graphql-magic") => {
267
268
  ${parts.join("\n\n")}`;
268
269
  };
269
270
 
270
- // src/client/queries.ts
271
- var import_upperFirst = __toESM(require("lodash/upperFirst"), 1);
272
-
273
271
  // src/models/utils.ts
274
272
  var import_assert = __toESM(require("assert"), 1);
275
273
  var import_lodash3 = require("lodash");
@@ -717,9 +715,9 @@ var isCreatable = ({ creatable }) => !!creatable;
717
715
  var isQueriableBy = (role) => (field) => field.queriable !== false && (field.queriable === void 0 || field.queriable === true || !field.queriable.roles || field.queriable.roles.includes(role));
718
716
  var isUpdatableBy = (role) => (field) => field.updatable && (field.updatable === true || !field.updatable.roles || field.updatable.roles.includes(role));
719
717
  var isCreatableBy = (role) => (field) => field.creatable && (field.creatable === true || !field.creatable.roles || field.creatable.roles.includes(role));
720
- var actionableRelations = (model, action) => model.relations.filter(
718
+ var getActionableRelations = (model, action) => model.relations.filter(
721
719
  (relation) => relation.field[`${action === "filter" ? action : action.slice(0, -1)}able`]
722
- );
720
+ ).map(({ name: name2 }) => name2);
723
721
  var summonByName = (array, value2) => summonByKey(array, "name", value2);
724
722
  var summonByKey = (array, key, value2) => summon(array, (element) => (0, import_get.default)(element, key) === value2, `No element found with ${key} ${value2}`);
725
723
  var summon = (array, cb, errorMessage) => {
@@ -771,27 +769,35 @@ var getUpdateEntityQuery = (model, role, fields2, additionalFields = "") => `que
771
769
  data: ${typeToField(model.name)}(where: { id: $id }) {
772
770
  id
773
771
  ${model.fields.filter(({ name: name2 }) => !fields2 || fields2.includes(name2)).filter(not(isRelation)).filter(isUpdatableBy(role)).map(({ name: name2 }) => name2).join(" ")}
774
- ${actionableRelations(model, "update").filter(({ name: name2 }) => !fields2 || fields2.includes(name2)).map(({ name: name2 }) => `${name2} { id }`)}
772
+ ${getActionableRelations(model, "update").filter((name2) => !fields2 || fields2.includes(name2)).map((name2) => `${name2} { id }`)}
775
773
  ${additionalFields}
776
774
  }
777
775
  }`;
778
- var getEditEntityRelationsQuery = (model, action, fields2, ignoreFields, additionalFields = {}) => {
779
- const relations = actionableRelations(model, action).filter(
780
- ({ name: name2 }) => (!fields2 || fields2.includes(name2)) && (!ignoreFields || !ignoreFields.includes(name2))
781
- );
782
- return !!relations.length && `query ${(0, import_upperFirst.default)(action)}${model.name}Relations {
776
+ var fieldIsSearchable = (model, fieldName) => {
777
+ const relation = model.getRelation(fieldName);
778
+ const targetModel = relation.targetModel;
779
+ const displayField2 = targetModel.getField(targetModel.displayField || "id");
780
+ return displayField2.searchable;
781
+ };
782
+ var getSelectEntityRelationsQuery = (model, relationNames) => {
783
+ const relations = relationNames.map((name2) => model.getRelation(name2));
784
+ return !!relations.length && `query Select${model.name}Relations(${relations.map(
785
+ (relation) => `$${relation.name}Where: ${relation.targetModel.name}Where, $${relation.name}Limit: Int${fieldIsSearchable(model, relation.name) ? `, $${relation.name}Search: String` : ""}`
786
+ ).join(", ")}) {
783
787
  ${relations.map((relation) => {
784
788
  let filters = "";
785
789
  if (relation.targetModel.displayField) {
786
790
  const displayField2 = relation.targetModel.fieldsByName[relation.targetModel.displayField];
787
- if (displayField2.orderable) {
788
- filters = `(orderBy: [{ ${relation.targetModel.displayField}: ASC }])`;
791
+ if ("orderable" in displayField2 && displayField2.orderable) {
792
+ filters += `, orderBy: [{ ${relation.targetModel.displayField}: ASC }]`;
789
793
  }
790
794
  }
791
- return `${relation.name}: ${relation.targetModel.pluralField}${filters} {
795
+ if (fieldIsSearchable(model, relation.name)) {
796
+ filters += `, search: $${relation.name}Search`;
797
+ }
798
+ return `${relation.name}: ${relation.targetModel.pluralField}(where: $${relation.name}Where, limit: $${relation.name}Limit${filters}) {
792
799
  id
793
800
  display: ${relation.targetModel.displayField || "id"}
794
- ${additionalFields[relation.name] || ""}
795
801
  }`;
796
802
  }).join(" ")}
797
803
  }`;
@@ -843,17 +849,24 @@ var getMutationQuery = (model, action) => action === "create" ? `
843
849
  var displayField = (model) => `
844
850
  ${model.displayField ? `display: ${model.displayField}` : ""}
845
851
  `;
846
- var getEntityListQuery = (model, role, additionalFields = "", root) => `query ${model.plural}List(
852
+ var getEntityListQuery = (model, role, visibleRelationsByRole, typesWithSubRelations, additionalFields = "", root) => `query ${model.plural}List(
847
853
  ${root ? "$id: ID!," : ""}
848
854
  $limit: Int!,
849
855
  $where: ${model.name}Where!,
850
- ${model.fields.some(({ searchable }) => searchable) ? "$search: String," : ""}
856
+ ${model.relations.some(({ field: { searchable } }) => searchable) ? "$search: String," : ""}
851
857
  ) {
852
858
  ${root ? `root: ${typeToField(root.model.name)}(where: { id: $id }) {` : ""}
853
- data: ${root ? root.reverseRelationName : model.pluralField}(limit: $limit, where: $where, ${model.fields.some(({ searchable }) => searchable) ? ", search: $search" : ""}) {
859
+ data: ${root ? root.reverseRelationName : model.pluralField}(limit: $limit, where: $where, ${model.relations.some(({ field: { searchable } }) => searchable) ? ", search: $search" : ""}) {
854
860
  ${displayField(model)}
855
861
  ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name: name2 }) => name2)}
856
862
  ${additionalFields}
863
+ ${queryRelations(
864
+ model.models,
865
+ model.relations.filter(isVisibleRelation(visibleRelationsByRole, model.name, role)),
866
+ role,
867
+ typesWithSubRelations
868
+ )}
869
+ ${additionalFields}
857
870
  }
858
871
  ${root ? "}" : ""}
859
872
  }`;
@@ -861,7 +874,7 @@ var isVisibleRelation = (visibleRelationsByRole, modelName, role) => {
861
874
  const whitelist = visibleRelationsByRole[role]?.[modelName];
862
875
  return (relation) => whitelist ? whitelist.includes(relation.name) : true;
863
876
  };
864
- var getEntityQuery = (model, role, visibleRelationsByRole, typesWithSubRelations) => `query Get${model.name}Entity ($id: ID!) {
877
+ var getEntityQuery = (model, role, visibleRelationsByRole, typesWithSubRelations, additionalFields = "") => `query Get${model.name}Entity ($id: ID!) {
865
878
  data: ${typeToField(model.name)}(where: { id: $id }) {
866
879
  ${displayField(model)}
867
880
  ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name: name2 }) => name2)}
@@ -879,6 +892,7 @@ var getEntityQuery = (model, role, visibleRelationsByRole, typesWithSubRelations
879
892
  role,
880
893
  typesWithSubRelations
881
894
  )}
895
+ ${additionalFields}
882
896
  }
883
897
  }`;
884
898
  var getFindEntityQuery = (model, role) => `query Find${model.name}($where: ${model.name}Where!, $orderBy: [${model.name}OrderBy!]) {
@@ -3242,7 +3256,6 @@ var printSchemaFromModels = (models) => printSchema((0, import_graphql5.buildAST
3242
3256
  ScalarModel,
3243
3257
  TYPE_ALIAS,
3244
3258
  UserInputError,
3245
- actionableRelations,
3246
3259
  addJoin,
3247
3260
  and,
3248
3261
  apply,
@@ -3258,6 +3271,7 @@ var printSchemaFromModels = (models) => printSchema((0, import_graphql5.buildAST
3258
3271
  document,
3259
3272
  enm,
3260
3273
  execute,
3274
+ fieldIsSearchable,
3261
3275
  fieldType,
3262
3276
  fields,
3263
3277
  generate,
@@ -3267,9 +3281,9 @@ var printSchemaFromModels = (models) => printSchema((0, import_graphql5.buildAST
3267
3281
  generateMutations,
3268
3282
  generatePermissions,
3269
3283
  get,
3284
+ getActionableRelations,
3270
3285
  getColumn,
3271
3286
  getColumnName,
3272
- getEditEntityRelationsQuery,
3273
3287
  getEntityListQuery,
3274
3288
  getEntityQuery,
3275
3289
  getEntityToMutate,
@@ -3287,6 +3301,7 @@ var printSchemaFromModels = (models) => printSchema((0, import_graphql5.buildAST
3287
3301
  getResolverNode,
3288
3302
  getResolvers,
3289
3303
  getRootFieldNode,
3304
+ getSelectEntityRelationsQuery,
3290
3305
  getSimpleFields,
3291
3306
  getString,
3292
3307
  getType,
@@ -1,7 +1,9 @@
1
1
  import { ManyToManyRelation } from '..';
2
2
  import { EntityModel, Model, Models, Relation } from '../models/models';
3
3
  export declare const getUpdateEntityQuery: (model: EntityModel, role: any, fields?: string[] | undefined, additionalFields?: string) => string;
4
- export declare const getEditEntityRelationsQuery: (model: EntityModel, action: 'create' | 'update' | 'filter', fields?: string[], ignoreFields?: string[], additionalFields?: Record<string, string>) => string;
4
+ export type RelationConstraints = Record<string, (source: any) => any>;
5
+ export declare const fieldIsSearchable: (model: EntityModel, fieldName: string) => boolean;
6
+ export declare const getSelectEntityRelationsQuery: (model: EntityModel, relationNames: string[]) => string;
5
7
  export declare const getManyToManyRelationsQuery: (model: Model, action: 'create' | 'update', manyToManyRelations: ManyToManyRelation[]) => string;
6
8
  export type MutationQuery = {
7
9
  mutated: {
@@ -10,13 +12,13 @@ export type MutationQuery = {
10
12
  };
11
13
  export declare const getMutationQuery: (model: Model, action: 'create' | 'update' | 'delete') => string;
12
14
  export declare const displayField: (model: EntityModel) => string;
13
- export declare const getEntityListQuery: (model: EntityModel, role: string, additionalFields?: string, root?: {
15
+ export declare const getEntityListQuery: (model: EntityModel, role: string, visibleRelationsByRole: VisibleRelationsByRole, typesWithSubRelations: string[], additionalFields?: string, root?: {
14
16
  model: EntityModel;
15
17
  entity: any;
16
18
  reverseRelationName: string;
17
19
  }) => string;
18
20
  export type VisibleRelationsByRole = Record<string, Record<string, string[]>>;
19
21
  export declare const isVisibleRelation: (visibleRelationsByRole: VisibleRelationsByRole, modelName: string, role: string) => (relation: Relation) => boolean;
20
- export declare const getEntityQuery: (model: EntityModel, role: string, visibleRelationsByRole: VisibleRelationsByRole, typesWithSubRelations: string[]) => string;
22
+ export declare const getEntityQuery: (model: EntityModel, role: string, visibleRelationsByRole: VisibleRelationsByRole, typesWithSubRelations: string[], additionalFields?: string) => string;
21
23
  export declare const getFindEntityQuery: (model: EntityModel, role: string) => string;
22
24
  export declare const queryRelations: (models: Models, relations: Relation[], role: string, typesWithSubRelations: string[]) => string;
@@ -1,5 +1,4 @@
1
- import upperFirst from 'lodash/upperFirst';
2
- import { actionableRelations, and, isQueriableBy, isRelation, isSimpleField, isToOneRelation, isUpdatableBy, not, typeToField, } from '../models/utils';
1
+ import { and, getActionableRelations, isQueriableBy, isRelation, isSimpleField, isToOneRelation, isUpdatableBy, not, typeToField, } from '../models/utils';
3
2
  export const getUpdateEntityQuery = (model, role, fields, additionalFields = '') => `query Update${model.name}Fields ($id: ID!) {
4
3
  data: ${typeToField(model.name)}(where: { id: $id }) {
5
4
  id
@@ -9,29 +8,39 @@ export const getUpdateEntityQuery = (model, role, fields, additionalFields = '')
9
8
  .filter(isUpdatableBy(role))
10
9
  .map(({ name }) => name)
11
10
  .join(' ')}
12
- ${actionableRelations(model, 'update')
13
- .filter(({ name }) => !fields || fields.includes(name))
14
- .map(({ name }) => `${name} { id }`)}
11
+ ${getActionableRelations(model, 'update')
12
+ .filter((name) => !fields || fields.includes(name))
13
+ .map((name) => `${name} { id }`)}
15
14
  ${additionalFields}
16
15
  }
17
16
  }`;
18
- export const getEditEntityRelationsQuery = (model, action, fields, ignoreFields, additionalFields = {}) => {
19
- const relations = actionableRelations(model, action).filter(({ name }) => (!fields || fields.includes(name)) && (!ignoreFields || !ignoreFields.includes(name)));
17
+ export const fieldIsSearchable = (model, fieldName) => {
18
+ const relation = model.getRelation(fieldName);
19
+ const targetModel = relation.targetModel;
20
+ const displayField = targetModel.getField(targetModel.displayField || 'id');
21
+ return displayField.searchable;
22
+ };
23
+ export const getSelectEntityRelationsQuery = (model, relationNames) => {
24
+ const relations = relationNames.map((name) => model.getRelation(name));
20
25
  return (!!relations.length &&
21
- `query ${upperFirst(action)}${model.name}Relations {
26
+ `query Select${model.name}Relations(${relations
27
+ .map((relation) => `$${relation.name}Where: ${relation.targetModel.name}Where, $${relation.name}Limit: Int${fieldIsSearchable(model, relation.name) ? `, $${relation.name}Search: String` : ''}`)
28
+ .join(', ')}) {
22
29
  ${relations
23
30
  .map((relation) => {
24
31
  let filters = '';
25
32
  if (relation.targetModel.displayField) {
26
33
  const displayField = relation.targetModel.fieldsByName[relation.targetModel.displayField];
27
- if (displayField.orderable) {
28
- filters = `(orderBy: [{ ${relation.targetModel.displayField}: ASC }])`;
34
+ if ('orderable' in displayField && displayField.orderable) {
35
+ filters += `, orderBy: [{ ${relation.targetModel.displayField}: ASC }]`;
29
36
  }
30
37
  }
31
- return `${relation.name}: ${relation.targetModel.pluralField}${filters} {
38
+ if (fieldIsSearchable(model, relation.name)) {
39
+ filters += `, search: $${relation.name}Search`;
40
+ }
41
+ return `${relation.name}: ${relation.targetModel.pluralField}(where: $${relation.name}Where, limit: $${relation.name}Limit${filters}) {
32
42
  id
33
43
  display: ${relation.targetModel.displayField || 'id'}
34
- ${additionalFields[relation.name] || ''}
35
44
  }`;
36
45
  })
37
46
  .join(' ')}
@@ -97,17 +106,19 @@ export const getMutationQuery = (model, action) => action === 'create'
97
106
  export const displayField = (model) => `
98
107
  ${model.displayField ? `display: ${model.displayField}` : ''}
99
108
  `;
100
- export const getEntityListQuery = (model, role, additionalFields = '', root) => `query ${model.plural}List(
109
+ export const getEntityListQuery = (model, role, visibleRelationsByRole, typesWithSubRelations, additionalFields = '', root) => `query ${model.plural}List(
101
110
  ${root ? '$id: ID!,' : ''}
102
111
  $limit: Int!,
103
112
  $where: ${model.name}Where!,
104
- ${model.fields.some(({ searchable }) => searchable) ? '$search: String,' : ''}
113
+ ${model.relations.some(({ field: { searchable } }) => searchable) ? '$search: String,' : ''}
105
114
  ) {
106
115
  ${root ? `root: ${typeToField(root.model.name)}(where: { id: $id }) {` : ''}
107
- data: ${root ? root.reverseRelationName : model.pluralField}(limit: $limit, where: $where, ${model.fields.some(({ searchable }) => searchable) ? ', search: $search' : ''}) {
116
+ data: ${root ? root.reverseRelationName : model.pluralField}(limit: $limit, where: $where, ${model.relations.some(({ field: { searchable } }) => searchable) ? ', search: $search' : ''}) {
108
117
  ${displayField(model)}
109
118
  ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name }) => name)}
110
119
  ${additionalFields}
120
+ ${queryRelations(model.models, model.relations.filter(isVisibleRelation(visibleRelationsByRole, model.name, role)), role, typesWithSubRelations)}
121
+ ${additionalFields}
111
122
  }
112
123
  ${root ? '}' : ''}
113
124
  }`;
@@ -115,13 +126,14 @@ export const isVisibleRelation = (visibleRelationsByRole, modelName, role) => {
115
126
  const whitelist = visibleRelationsByRole[role]?.[modelName];
116
127
  return (relation) => (whitelist ? whitelist.includes(relation.name) : true);
117
128
  };
118
- export const getEntityQuery = (model, role, visibleRelationsByRole, typesWithSubRelations) => `query Get${model.name}Entity ($id: ID!) {
129
+ export const getEntityQuery = (model, role, visibleRelationsByRole, typesWithSubRelations, additionalFields = '') => `query Get${model.name}Entity ($id: ID!) {
119
130
  data: ${typeToField(model.name)}(where: { id: $id }) {
120
131
  ${displayField(model)}
121
132
  ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name }) => name)}
122
133
  ${queryRelations(model.models, model.relations.filter(isVisibleRelation(visibleRelationsByRole, model.name, role)), role, typesWithSubRelations)}
123
134
  ${queryRelations(model.models, model.reverseRelations.filter((reverseRelation) => isToOneRelation(reverseRelation.field) &&
124
135
  isVisibleRelation(visibleRelationsByRole, model.name, role)(reverseRelation)), role, typesWithSubRelations)}
136
+ ${additionalFields}
125
137
  }
126
138
  }`;
127
139
  export const getFindEntityQuery = (model, role) => `query Find${model.name}($where: ${model.name}Where!, $orderBy: [${model.name}OrderBy!]) {
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/client/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/client/queries.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,GAAG,EACH,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,GAAG,EACH,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAAkB,EAClB,IAAS,EACT,MAA6B,EAC7B,gBAAgB,GAAG,EAAE,EACrB,EAAE,CAAC,eAAe,KAAK,CAAC,IAAI;UACpB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;;MAE3B,KAAK,CAAC,MAAM;KACX,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACtD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC3B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;KACvB,IAAI,CAAC,GAAG,CAAC;MACV,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;KACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,SAAS,CAAC;MAChC,gBAAgB;;EAEpB,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAkB,EAAE,SAAiB,EAAE,EAAE;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IAC5E,OAAO,YAAY,CAAC,UAAU,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,KAAkB,EAAE,aAAuB,EAAE,EAAE;IAC3F,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvE,OAAO,CACL,CAAC,CAAC,SAAS,CAAC,MAAM;QAClB,eAAe,KAAK,CAAC,IAAI,aAAa,SAAS;aAC5C,GAAG,CACF,CAAC,QAAQ,EAAE,EAAE,CACX,IAAI,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,QAAQ,CAAC,IAAI,aAC1E,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAClF,EAAE,CACL;aACA,IAAI,CAAC,IAAI,CAAC;QACT,SAAS;aACR,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,IAAI,OAAO,GAAG,EAAE,CAAC;YAEjB,IAAI,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;gBACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1F,IAAI,WAAW,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC1D,OAAO,IAAI,iBAAiB,QAAQ,CAAC,WAAW,CAAC,YAAY,UAAU,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,cAAc,QAAQ,CAAC,IAAI,QAAQ,CAAC;YACjD,CAAC;YAED,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,CAAC,WAAW,YAAY,QAAQ,CAAC,IAAI,kBACnF,QAAQ,CAAC,IACX,QAAQ,OAAO;;uBAEF,QAAQ,CAAC,WAAW,CAAC,YAAY,IAAI,IAAI;YACpD,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC;MACZ,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAAY,EACZ,MAA2B,EAC3B,mBAAyC,EACzC,EAAE,CACF,CAAC,CAAC,mBAAmB,CAAC,MAAM;IAC5B,CAAC,MAAM,KAAK,QAAQ;QAClB,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI;cACjB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrB,mBAAmB;aAClB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,OAAO,GAAG,QAAQ,CAAC,IAAI;;sBAEnB,QAAQ,CAAC,gBAAgB,CAAC,IAAI;;;oBAGhC,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC;;cAEZ,mBAAmB;aAClB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,CAAC,WAAW;;oBAExD,QAAQ,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE;kBACzC,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC;YACZ;QACR,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI;cACjB,mBAAmB;aAClB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,CAAC,WAAW;;oBAExD,QAAQ,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE;kBACzC,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC;YACZ,CAAC,CAAC;AAQd,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,MAAsC,EAAE,EAAE,CACvF,MAAM,KAAK,QAAQ;IACjB,CAAC,CAAC;yBACmB,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,IAAI;2BACpC,KAAK,CAAC,IAAI;;;;SAI5B;IACL,CAAC,CAAC,MAAM,KAAK,QAAQ;QACrB,CAAC,CAAC;yBACmB,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,IAAI;2BAC9C,KAAK,CAAC,IAAI;;;;SAI5B;QACL,CAAC,CAAC;yBACmB,KAAK,CAAC,IAAI;2BACR,KAAK,CAAC,IAAI;;;;SAI5B,CAAC;AAEV,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAE,EAAE,CAAC;EAClD,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;CAC3D,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAkB,EAClB,IAAY,EACZ,sBAA8C,EAC9C,qBAA+B,EAC/B,gBAAgB,GAAG,EAAE,EACrB,IAKC,EACD,EAAE,CAAC,SAAS,KAAK,CAAC,MAAM;IACtB,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;;YAEf,KAAK,CAAC,IAAI;IAClB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;;IAEzF,IAAI,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;YACjE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,kCAC7D,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAC1F;QACQ,YAAY,CAAC,KAAK,CAAC;QACnB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;QACpF,gBAAgB;QAChB,cAAc,CACd,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EACnF,IAAI,EACJ,qBAAqB,CACtB;QACC,gBAAgB;;IAEpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;EACjB,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,sBAA8C,EAAE,SAAiB,EAAE,IAAY,EAAE,EAAE;IACnH,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5D,OAAO,CAAC,QAAkB,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAkB,EAClB,IAAY,EACZ,sBAA8C,EAC9C,qBAA+B,EAC/B,gBAAgB,GAAG,EAAE,EACrB,EAAE,CAAC,YAAY,KAAK,CAAC,IAAI;UACjB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;MAC3B,YAAY,CAAC,KAAK,CAAC;MACnB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;MACpF,cAAc,CACd,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EACnF,IAAI,EACJ,qBAAqB,CACtB;MACC,cAAc,CACd,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3B,CAAC,eAAe,EAAE,EAAE,CAClB,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC;IACtC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,eAAe,CAAC,CAC/E,EACD,IAAI,EACJ,qBAAqB,CACtB;MACC,gBAAgB;;EAEpB,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAkB,EAAE,IAAY,EAAE,EAAE,CAAC,aAAa,KAAK,CAAC,IAAI,YAC7F,KAAK,CAAC,IACR,sBAAsB,KAAK,CAAC,IAAI;UACtB,KAAK,CAAC,WAAW;MACrB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;;EAExF,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,SAAqB,EAAE,IAAY,EAAE,qBAA+B,EAAE,EAAE,CACrH,SAAS;KACN,GAAG,CAAC,CAAC,QAAQ,EAAU,EAAE;IACxB,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAErH,OAAO,GAAG,QAAQ,CAAC,IAAI;;YAEjB,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE;UAClG,CAAC;AACP,CAAC,CAAC;KACD,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -115,7 +115,7 @@ export declare const isCreatable: ({ creatable }: EntityField) => boolean;
115
115
  export declare const isQueriableBy: (role: string) => (field: EntityField) => boolean;
116
116
  export declare const isUpdatableBy: (role: string) => (field: EntityField) => boolean;
117
117
  export declare const isCreatableBy: (role: string) => (field: EntityField) => boolean;
118
- export declare const actionableRelations: (model: EntityModel, action: 'create' | 'update' | 'filter') => import("./models").NormalRelation[];
118
+ export declare const getActionableRelations: (model: EntityModel, action: 'create' | 'update' | 'filter') => string[];
119
119
  export declare const summonByName: <T extends {
120
120
  name: string;
121
121
  }>(array: T[], value: string) => T;
@@ -41,7 +41,9 @@ export const isQueriableBy = (role) => (field) => field.queriable !== false &&
41
41
  field.queriable.roles.includes(role));
42
42
  export const isUpdatableBy = (role) => (field) => field.updatable && (field.updatable === true || !field.updatable.roles || field.updatable.roles.includes(role));
43
43
  export const isCreatableBy = (role) => (field) => field.creatable && (field.creatable === true || !field.creatable.roles || field.creatable.roles.includes(role));
44
- export const actionableRelations = (model, action) => model.relations.filter((relation) => relation.field[`${action === 'filter' ? action : action.slice(0, -1)}able`]);
44
+ export const getActionableRelations = (model, action) => model.relations
45
+ .filter((relation) => relation.field[`${action === 'filter' ? action : action.slice(0, -1)}able`])
46
+ .map(({ name }) => name);
45
47
  export const summonByName = (array, value) => summonByKey(array, 'name', value);
46
48
  export const summonByKey = (array, key, value) => summon(array, (element) => lodashGet(element, key) === value, `No element found with ${key} ${value}`);
47
49
  export const summon = (array, cb, errorMessage) => {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartive/graphql-magic",
3
- "version": "11.3.0",
3
+ "version": "13.0.0",
4
4
  "description": "",
5
5
  "source": "src/index.ts",
6
6
  "type": "module",
@@ -70,20 +70,20 @@
70
70
  "devDependencies": {
71
71
  "@smartive/eslint-config": "3.3.0",
72
72
  "@smartive/prettier-config": "3.1.2",
73
- "@types/jest": "29.5.11",
73
+ "@types/jest": "29.5.12",
74
74
  "@types/lodash": "4.14.202",
75
- "@types/luxon": "3.3.7",
76
- "@types/pg": "8.10.9",
77
- "@types/uuid": "9.0.7",
75
+ "@types/luxon": "3.4.2",
76
+ "@types/pg": "8.11.0",
77
+ "@types/uuid": "9.0.8",
78
78
  "create-ts-index": "1.14.0",
79
79
  "del-cli": "5.1.0",
80
- "esbuild": "0.19.10",
80
+ "esbuild": "0.20.0",
81
81
  "eslint": "8.56.0",
82
82
  "graphql-request": "6.1.0",
83
83
  "jest": "29.7.0",
84
84
  "mock-knex": "0.4.13",
85
85
  "prettier": "2.8.8",
86
- "ts-jest": "29.1.1",
86
+ "ts-jest": "29.1.2",
87
87
  "ts-node": "10.9.2",
88
88
  "typescript": "5.3.3"
89
89
  }
@@ -1,9 +1,8 @@
1
- import upperFirst from 'lodash/upperFirst';
2
1
  import { ManyToManyRelation } from '..';
3
2
  import { EntityModel, Model, Models, Relation } from '../models/models';
4
3
  import {
5
- actionableRelations,
6
4
  and,
5
+ getActionableRelations,
7
6
  isQueriableBy,
8
7
  isRelation,
9
8
  isSimpleField,
@@ -27,41 +26,55 @@ export const getUpdateEntityQuery = (
27
26
  .filter(isUpdatableBy(role))
28
27
  .map(({ name }) => name)
29
28
  .join(' ')}
30
- ${actionableRelations(model, 'update')
31
- .filter(({ name }) => !fields || fields.includes(name))
32
- .map(({ name }) => `${name} { id }`)}
29
+ ${getActionableRelations(model, 'update')
30
+ .filter((name) => !fields || fields.includes(name))
31
+ .map((name) => `${name} { id }`)}
33
32
  ${additionalFields}
34
33
  }
35
34
  }`;
36
35
 
37
- export const getEditEntityRelationsQuery = (
38
- model: EntityModel,
39
- action: 'create' | 'update' | 'filter',
40
- fields?: string[],
41
- ignoreFields?: string[],
42
- additionalFields: Record<string, string> = {}
43
- ) => {
44
- const relations = actionableRelations(model, action).filter(
45
- ({ name }) => (!fields || fields.includes(name)) && (!ignoreFields || !ignoreFields.includes(name))
46
- );
36
+ export type RelationConstraints = Record<string, (source: any) => any>;
37
+
38
+ export const fieldIsSearchable = (model: EntityModel, fieldName: string) => {
39
+ const relation = model.getRelation(fieldName);
40
+ const targetModel = relation.targetModel;
41
+ const displayField = targetModel.getField(targetModel.displayField || 'id');
42
+ return displayField.searchable;
43
+ };
44
+
45
+ export const getSelectEntityRelationsQuery = (model: EntityModel, relationNames: string[]) => {
46
+ const relations = relationNames.map((name) => model.getRelation(name));
47
47
 
48
48
  return (
49
49
  !!relations.length &&
50
- `query ${upperFirst(action)}${model.name}Relations {
50
+ `query Select${model.name}Relations(${relations
51
+ .map(
52
+ (relation) =>
53
+ `$${relation.name}Where: ${relation.targetModel.name}Where, $${relation.name}Limit: Int${
54
+ fieldIsSearchable(model, relation.name) ? `, $${relation.name}Search: String` : ''
55
+ }`
56
+ )
57
+ .join(', ')}) {
51
58
  ${relations
52
59
  .map((relation) => {
53
60
  let filters = '';
61
+
54
62
  if (relation.targetModel.displayField) {
55
63
  const displayField = relation.targetModel.fieldsByName[relation.targetModel.displayField];
56
- if (displayField.orderable) {
57
- filters = `(orderBy: [{ ${relation.targetModel.displayField}: ASC }])`;
64
+ if ('orderable' in displayField && displayField.orderable) {
65
+ filters += `, orderBy: [{ ${relation.targetModel.displayField}: ASC }]`;
58
66
  }
59
67
  }
60
68
 
61
- return `${relation.name}: ${relation.targetModel.pluralField}${filters} {
69
+ if (fieldIsSearchable(model, relation.name)) {
70
+ filters += `, search: $${relation.name}Search`;
71
+ }
72
+
73
+ return `${relation.name}: ${relation.targetModel.pluralField}(where: $${relation.name}Where, limit: $${
74
+ relation.name
75
+ }Limit${filters}) {
62
76
  id
63
77
  display: ${relation.targetModel.displayField || 'id'}
64
- ${additionalFields[relation.name] || ''}
65
78
  }`;
66
79
  })
67
80
  .join(' ')}
@@ -147,6 +160,8 @@ ${model.displayField ? `display: ${model.displayField}` : ''}
147
160
  export const getEntityListQuery = (
148
161
  model: EntityModel,
149
162
  role: string,
163
+ visibleRelationsByRole: VisibleRelationsByRole,
164
+ typesWithSubRelations: string[],
150
165
  additionalFields = '',
151
166
  root?: {
152
167
  model: EntityModel;
@@ -158,15 +173,22 @@ export const getEntityListQuery = (
158
173
  ${root ? '$id: ID!,' : ''}
159
174
  $limit: Int!,
160
175
  $where: ${model.name}Where!,
161
- ${model.fields.some(({ searchable }) => searchable) ? '$search: String,' : ''}
176
+ ${model.relations.some(({ field: { searchable } }) => searchable) ? '$search: String,' : ''}
162
177
  ) {
163
178
  ${root ? `root: ${typeToField(root.model.name)}(where: { id: $id }) {` : ''}
164
179
  data: ${root ? root.reverseRelationName : model.pluralField}(limit: $limit, where: $where, ${
165
- model.fields.some(({ searchable }) => searchable) ? ', search: $search' : ''
180
+ model.relations.some(({ field: { searchable } }) => searchable) ? ', search: $search' : ''
166
181
  }) {
167
182
  ${displayField(model)}
168
183
  ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name }) => name)}
169
184
  ${additionalFields}
185
+ ${queryRelations(
186
+ model.models,
187
+ model.relations.filter(isVisibleRelation(visibleRelationsByRole, model.name, role)),
188
+ role,
189
+ typesWithSubRelations
190
+ )}
191
+ ${additionalFields}
170
192
  }
171
193
  ${root ? '}' : ''}
172
194
  }`;
@@ -182,7 +204,8 @@ export const getEntityQuery = (
182
204
  model: EntityModel,
183
205
  role: string,
184
206
  visibleRelationsByRole: VisibleRelationsByRole,
185
- typesWithSubRelations: string[]
207
+ typesWithSubRelations: string[],
208
+ additionalFields = ''
186
209
  ) => `query Get${model.name}Entity ($id: ID!) {
187
210
  data: ${typeToField(model.name)}(where: { id: $id }) {
188
211
  ${displayField(model)}
@@ -203,6 +226,7 @@ export const getEntityQuery = (
203
226
  role,
204
227
  typesWithSubRelations
205
228
  )}
229
+ ${additionalFields}
206
230
  }
207
231
  }`;
208
232
 
@@ -104,11 +104,15 @@ export const isUpdatableBy = (role: string) => (field: EntityField) =>
104
104
  export const isCreatableBy = (role: string) => (field: EntityField) =>
105
105
  field.creatable && (field.creatable === true || !field.creatable.roles || field.creatable.roles.includes(role));
106
106
 
107
- export const actionableRelations = (model: EntityModel, action: 'create' | 'update' | 'filter') =>
108
- model.relations.filter(
109
- (relation) =>
110
- relation.field[`${action === 'filter' ? action : action.slice(0, -1)}able` as 'filterable' | 'creatable' | 'updatable']
111
- );
107
+ export const getActionableRelations = (model: EntityModel, action: 'create' | 'update' | 'filter') =>
108
+ model.relations
109
+ .filter(
110
+ (relation) =>
111
+ relation.field[
112
+ `${action === 'filter' ? action : action.slice(0, -1)}able` as 'filterable' | 'creatable' | 'updatable'
113
+ ]
114
+ )
115
+ .map(({ name }) => name);
112
116
 
113
117
  export const summonByName = <T extends { name: string }>(array: T[], value: string) => summonByKey(array, 'name', value);
114
118
 
@@ -1,11 +1,10 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`queries getEntityRelationsQuery applies filters 1`] = `
4
- "query UpdateSomeObjectRelations {
5
- another: anotherObjects(orderBy: [{ name: ASC }]) {
4
+ "query SelectSomeObjectRelations($anotherWhere: AnotherObjectWhere, $anotherLimit: Int) {
5
+ another: anotherObjects(where: $anotherWhere, limit: $anotherLimit, orderBy: [{ name: ASC }]) {
6
6
  id
7
7
  display: name
8
-
9
8
  }
10
9
  }"
11
10
  `;
@@ -1,10 +1,11 @@
1
- import { getEditEntityRelationsQuery } from '../../src';
1
+ import { getActionableRelations, getSelectEntityRelationsQuery } from '../../src';
2
2
  import { models } from '../utils/models';
3
3
 
4
4
  describe('queries', () => {
5
5
  describe('getEntityRelationsQuery', () => {
6
6
  it('applies filters', () => {
7
- expect(getEditEntityRelationsQuery(models.getModel('SomeObject', 'entity'), 'update')).toMatchSnapshot();
7
+ const model = models.getModel('SomeObject', 'entity');
8
+ expect(getSelectEntityRelationsQuery(model, getActionableRelations(model, 'update'))).toMatchSnapshot();
8
9
  });
9
10
  });
10
11
  });