@smartive/graphql-magic 23.3.0 → 23.4.0-next.4

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 (41) hide show
  1. package/.github/workflows/release.yml +8 -2
  2. package/CHANGELOG.md +4 -2
  3. package/dist/bin/gqm.cjs +642 -63
  4. package/dist/cjs/index.cjs +2767 -2107
  5. package/dist/esm/migrations/generate-functions.d.ts +2 -0
  6. package/dist/esm/migrations/generate-functions.js +59 -0
  7. package/dist/esm/migrations/generate-functions.js.map +1 -0
  8. package/dist/esm/migrations/generate.d.ts +8 -1
  9. package/dist/esm/migrations/generate.js +273 -33
  10. package/dist/esm/migrations/generate.js.map +1 -1
  11. package/dist/esm/migrations/index.d.ts +2 -0
  12. package/dist/esm/migrations/index.js +2 -0
  13. package/dist/esm/migrations/index.js.map +1 -1
  14. package/dist/esm/migrations/parse-functions.d.ts +8 -0
  15. package/dist/esm/migrations/parse-functions.js +105 -0
  16. package/dist/esm/migrations/parse-functions.js.map +1 -0
  17. package/dist/esm/migrations/update-functions.d.ts +2 -0
  18. package/dist/esm/migrations/update-functions.js +174 -0
  19. package/dist/esm/migrations/update-functions.js.map +1 -0
  20. package/dist/esm/models/model-definitions.d.ts +4 -1
  21. package/dist/esm/resolvers/filters.js +73 -14
  22. package/dist/esm/resolvers/filters.js.map +1 -1
  23. package/dist/esm/resolvers/selects.js +33 -2
  24. package/dist/esm/resolvers/selects.js.map +1 -1
  25. package/dist/esm/resolvers/utils.d.ts +1 -0
  26. package/dist/esm/resolvers/utils.js +22 -0
  27. package/dist/esm/resolvers/utils.js.map +1 -1
  28. package/docs/docs/3-fields.md +149 -0
  29. package/docs/docs/5-migrations.md +9 -1
  30. package/package.json +5 -1
  31. package/src/bin/gqm/gqm.ts +40 -5
  32. package/src/bin/gqm/settings.ts +7 -0
  33. package/src/migrations/generate-functions.ts +72 -0
  34. package/src/migrations/generate.ts +338 -41
  35. package/src/migrations/index.ts +2 -0
  36. package/src/migrations/parse-functions.ts +140 -0
  37. package/src/migrations/update-functions.ts +216 -0
  38. package/src/models/model-definitions.ts +4 -1
  39. package/src/resolvers/filters.ts +81 -25
  40. package/src/resolvers/selects.ts +38 -5
  41. package/src/resolvers/utils.ts +32 -0
@@ -1,7 +1,7 @@
1
1
  import { getPermissionStack } from '..';
2
2
  import { ForbiddenError, UserInputError } from '../errors';
3
3
  import { normalizeArguments } from './arguments';
4
- import { addJoin, apply, applyJoins, getColumn, ors } from './utils';
4
+ import { addJoin, apply, applyJoins, getColumn, getColumnExpression, ors } from './utils';
5
5
  export const SPECIAL_FILTERS = {
6
6
  GT: '?? > ?',
7
7
  GTE: '?? >= ?',
@@ -120,15 +120,30 @@ const applyWhere = (node, where, ops, joins) => {
120
120
  // Should not happen
121
121
  throw new Error(`Invalid filter ${key}.`);
122
122
  }
123
- ops.push((query) => query.whereRaw(SPECIAL_FILTERS[filter], [getColumn(node, actualKey), value]));
123
+ const actualField = node.model.getField(actualKey);
124
+ const isExpressionField = actualField.generateAs?.type === 'expression';
125
+ const actualColumn = isExpressionField ? getColumnExpression(node, actualKey) : getColumn(node, actualKey);
126
+ if (isExpressionField) {
127
+ const operator = filter === 'GT' ? '>' : filter === 'GTE' ? '>=' : filter === 'LT' ? '<' : '<=';
128
+ ops.push((query) => query.whereRaw(`${actualColumn} ${operator} ?`, [value]));
129
+ }
130
+ else {
131
+ ops.push((query) => query.whereRaw(SPECIAL_FILTERS[filter], [actualColumn, value]));
132
+ }
124
133
  continue;
125
134
  }
126
135
  const field = node.model.getField(key);
127
- const column = getColumn(node, key);
136
+ const isExpressionField = field.generateAs?.type === 'expression';
137
+ const column = isExpressionField ? getColumnExpression(node, key) : getColumn(node, key);
128
138
  if (field.kind === 'relation') {
129
139
  const relation = node.model.getRelation(field.name);
130
140
  if (value === null) {
131
- ops.push((query) => query.whereNull(column));
141
+ if (isExpressionField) {
142
+ ops.push((query) => query.whereRaw(`${column} IS NULL`));
143
+ }
144
+ else {
145
+ ops.push((query) => query.whereNull(column));
146
+ }
132
147
  continue;
133
148
  }
134
149
  const targetModel = relation.targetModel;
@@ -146,29 +161,66 @@ const applyWhere = (node, where, ops, joins) => {
146
161
  }
147
162
  if (Array.isArray(value)) {
148
163
  if (field && field.list) {
149
- ops.push((query) => ors(query, value.map((v) => (subQuery) => subQuery.whereRaw('? = ANY(??)', [v, column]))));
164
+ if (isExpressionField) {
165
+ ops.push((query) => ors(query, value.map((v) => (subQuery) => subQuery.whereRaw(`? = ANY(${column})`, [v]))));
166
+ }
167
+ else {
168
+ ops.push((query) => ors(query, value.map((v) => (subQuery) => subQuery.whereRaw('? = ANY(??)', [v, column]))));
169
+ }
150
170
  continue;
151
171
  }
152
172
  if (value.some((v) => v === null)) {
153
173
  if (value.some((v) => v !== null)) {
154
- ops.push((query) => ors(query, [
155
- (subQuery) => subQuery.whereIn(column, value.filter((v) => v !== null)),
156
- (subQuery) => subQuery.whereNull(column),
157
- ]));
174
+ if (isExpressionField) {
175
+ ops.push((query) => ors(query, [
176
+ (subQuery) => subQuery.whereRaw(`${column} IN (?)`, [value.filter((v) => v !== null)]),
177
+ (subQuery) => subQuery.whereRaw(`${column} IS NULL`),
178
+ ]));
179
+ }
180
+ else {
181
+ ops.push((query) => ors(query, [
182
+ (subQuery) => subQuery.whereIn(column, value.filter((v) => v !== null)),
183
+ (subQuery) => subQuery.whereNull(column),
184
+ ]));
185
+ }
158
186
  continue;
159
187
  }
160
- ops.push((query) => query.whereNull(column));
188
+ if (isExpressionField) {
189
+ ops.push((query) => query.whereRaw(`${column} IS NULL`));
190
+ }
191
+ else {
192
+ ops.push((query) => query.whereNull(column));
193
+ }
161
194
  continue;
162
195
  }
163
- ops.push((query) => query.whereIn(column, value));
196
+ if (isExpressionField) {
197
+ ops.push((query) => query.whereRaw(`${column} IN (?)`, [value]));
198
+ }
199
+ else {
200
+ ops.push((query) => query.whereIn(column, value));
201
+ }
164
202
  continue;
165
203
  }
166
- ops.push((query) => query.where({ [column]: value }));
204
+ if (isExpressionField) {
205
+ ops.push((query) => query.whereRaw(`${column} = ?`, [value]));
206
+ }
207
+ else {
208
+ ops.push((query) => query.where({ [column]: value }));
209
+ }
167
210
  }
168
211
  };
169
212
  const applySearch = (node, search, query) => ors(query, node.model.fields
170
213
  .filter(({ searchable }) => searchable)
171
- .map(({ name }) => (query) => query.whereRaw('??::text ILIKE ?', [getColumn(node, name), `%${search}%`])));
214
+ .map((field) => {
215
+ const isExpressionField = field.generateAs?.type === 'expression';
216
+ const column = isExpressionField ? getColumnExpression(node, field.name) : getColumn(node, field.name);
217
+ return (query) => {
218
+ if (isExpressionField) {
219
+ return query.whereRaw(`${column}::text ILIKE ?`, [`%${search}%`]);
220
+ }
221
+ return query.whereRaw('??::text ILIKE ?', [column, `%${search}%`]);
222
+ };
223
+ }));
172
224
  const applyOrderBy = (node, orderBy, query, joins) => {
173
225
  for (const vals of Array.isArray(orderBy) ? orderBy : [orderBy]) {
174
226
  const keys = Object.keys(vals);
@@ -194,7 +246,14 @@ const applyOrderBy = (node, orderBy, query, joins) => {
194
246
  continue;
195
247
  }
196
248
  // Simple field
197
- void query.orderBy(getColumn(node, key), value);
249
+ const isExpressionField = field.generateAs?.type === 'expression';
250
+ const column = isExpressionField ? getColumnExpression(node, key) : getColumn(node, key);
251
+ if (isExpressionField) {
252
+ void query.orderByRaw(`${column} ${value}`);
253
+ }
254
+ else {
255
+ void query.orderBy(column, value);
256
+ }
198
257
  }
199
258
  };
200
259
  //# sourceMappingURL=filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/resolvers/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/resolvers/filters.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ID_ALIAS, TYPE_ALIAS, addJoin, getFragmentSpreads, getInlineFragments, getJoins, getNameOrAlias, getSimpleFields, isFieldNode, } from '.';
2
2
  import { PermissionError, UserInputError, getRole } from '..';
3
+ import { getColumnName } from './utils';
3
4
  export const applySelects = (node, query, joins) => {
4
5
  if (node.isAggregate) {
5
6
  void query.select(node.selectionSet
@@ -11,7 +12,15 @@ export const applySelects = (node, query, joins) => {
11
12
  void query.select(...[
12
13
  { tableAlias: node.rootTableAlias, resultAlias: node.resultAlias, field: 'id', fieldAlias: ID_ALIAS },
13
14
  ...(node.model.root
14
- ? [{ tableAlias: node.rootTableAlias, resultAlias: node.resultAlias, field: 'type', fieldAlias: TYPE_ALIAS }]
15
+ ? [
16
+ {
17
+ tableAlias: node.rootTableAlias,
18
+ resultAlias: node.resultAlias,
19
+ field: 'type',
20
+ fieldAlias: TYPE_ALIAS,
21
+ generateAs: undefined,
22
+ },
23
+ ]
15
24
  : []),
16
25
  ...getSimpleFields(node)
17
26
  .filter((fieldNode) => {
@@ -40,9 +49,31 @@ export const applySelects = (node, query, joins) => {
40
49
  tableAlias: field.inherited ? node.rootTableAlias : node.tableAlias,
41
50
  resultAlias: node.resultAlias,
42
51
  fieldAlias,
52
+ generateAs: field.generateAs,
43
53
  };
44
54
  }),
45
- ].map(({ tableAlias, resultAlias, field, fieldAlias }) => `${node.ctx.aliases.getShort(tableAlias)}.${field} as ${node.ctx.aliases.getShort(resultAlias)}__${fieldAlias}`));
55
+ ].map(({ tableAlias, resultAlias, field, fieldAlias, generateAs }) => {
56
+ if (generateAs?.type === 'expression') {
57
+ const tableShortAlias = node.ctx.aliases.getShort(tableAlias);
58
+ const resultShortAlias = node.ctx.aliases.getShort(resultAlias);
59
+ const expression = generateAs.expression.replace(/\b(\w+)\b/g, (match, columnName) => {
60
+ const field = node.model.fields.find((f) => {
61
+ if (f.name === columnName) {
62
+ return true;
63
+ }
64
+ const actualColumnName = getColumnName(f);
65
+ return actualColumnName === columnName;
66
+ });
67
+ if (field) {
68
+ const actualColumnName = getColumnName(field);
69
+ return `${tableShortAlias}.${actualColumnName}`;
70
+ }
71
+ return match;
72
+ });
73
+ return node.ctx.knex.raw(`(${expression}) as ??`, [`${resultShortAlias}__${fieldAlias}`]);
74
+ }
75
+ return `${node.ctx.aliases.getShort(tableAlias)}.${field} as ${node.ctx.aliases.getShort(resultAlias)}__${fieldAlias}`;
76
+ }));
46
77
  for (const subNode of getInlineFragments(node)) {
47
78
  applySelects(subNode, query, joins);
48
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"selects.js","sourceRoot":"","sources":["../../../src/resolvers/selects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selects.js","sourceRoot":"","sources":["../../../src/resolvers/selects.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,7 @@ export declare class AliasGenerator {
45
45
  export declare const hash: (s: any) => string;
46
46
  export declare const getColumnName: (field: EntityField) => string;
47
47
  export declare const getColumn: (node: Pick<ResolverNode, "model" | "ctx" | "rootTableAlias" | "tableAlias">, fieldName: string) => string;
48
+ export declare const getColumnExpression: (node: Pick<ResolverNode, "model" | "ctx" | "rootTableAlias" | "tableAlias">, fieldName: string) => string;
48
49
  export declare const getTechnicalDisplay: (model: EntityModel, entity: Entity) => string;
49
50
  export declare const fetchDisplay: (knex: Knex, model: EntityModel, entity: Entity) => Promise<string>;
50
51
  export declare const getDisplay: (model: EntityModel, entity: Entity) => string;
@@ -136,6 +136,28 @@ export const getColumn = (node, fieldName) => {
136
136
  const field = node.model.fields.find((field) => field.name === fieldName);
137
137
  return `${node.ctx.aliases.getShort(field.inherited ? node.rootTableAlias : node.tableAlias)}.${getColumnName(field)}`;
138
138
  };
139
+ export const getColumnExpression = (node, fieldName) => {
140
+ const field = node.model.fields.find((field) => field.name === fieldName);
141
+ if (field.generateAs?.type === 'expression') {
142
+ const expression = field.generateAs.expression.replace(/\b(\w+)\b/g, (match, columnName) => {
143
+ const referencedField = node.model.fields.find((f) => {
144
+ if (f.name === columnName) {
145
+ return true;
146
+ }
147
+ const actualColumnName = getColumnName(f);
148
+ return actualColumnName === columnName;
149
+ });
150
+ if (referencedField) {
151
+ const actualColumnName = getColumnName(referencedField);
152
+ const referencedTableAlias = referencedField.inherited ? node.rootTableAlias : node.tableAlias;
153
+ return `${node.ctx.aliases.getShort(referencedTableAlias)}.${actualColumnName}`;
154
+ }
155
+ return match;
156
+ });
157
+ return `(${expression})`;
158
+ }
159
+ return getColumn(node, fieldName);
160
+ };
139
161
  export const getTechnicalDisplay = (model, entity) => model.displayField && entity[model.displayField]
140
162
  ? `${model.name} "${entity[model.displayField]}" (${entity.id})`
141
163
  : entity.id
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/resolvers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAWpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAI1C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAIjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAW,EAAU,EAAE;IACjD,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAc,EAAW,EAAE;IACpD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAU,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;AAEjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAU,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC;AAE7G,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAU,EAA2B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC;AAI7G,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAqB,EAAE,IAAY,EAAE,EAAE,CAC7D,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAA6B,EAAE,SAAS,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAiD,EAAE,EAAE,CACvF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AAOhD,MAAM,UAAU,OAAO,CACrB,IAAuB,EACvB,GAAgE;IAEhE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,OAAO,GAAG,GAAG,CAAC;YAClB,MAAM,CAAC,EAAE,kBAAkB,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAE,CAAC;YAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAChE,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,WAAW,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACzF,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YAC/G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;wBACtB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACtG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;4BACpB,SAAS,KAAK,CAAC;wBACjB,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,GAAG;wBACd,MAAM,EAAE,OAAO;qBAChB,CAAC;gBACJ,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC;QAED,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAwB,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAsD,EAAE,EAAE;IACrH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9B,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAClC,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtB,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;gBACpC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,EAAE;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAE7D,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC,IAAI,IAAI,uDAAuD,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAI,MAAS,EAAE,GAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAKjH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAuB,EAAE,KAAwB,EAAE,KAAY,EAAE,EAAE;IAC5F,KAAK,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;QAC/E,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,KAAK,KAAK,CAAC,QAAQ,CACjB,GAAG,UAAU,OAAO,gBAAgB,EAAE,EACtC,GAAG,gBAAgB,IAAI,OAAO,EAAE,EAChC,GAAG,gBAAgB,IAAI,OAAO,EAAE,CACjC,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,KAAY,EACZ,WAAmB,EACnB,UAAkB,EAClB,WAAmB,EACnB,OAAe,EACf,OAAe,EACf,EAAE;IACF,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3E,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,KAAK,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,OAAO,GAA2B,EAAE,CAAC;IAEtC,QAAQ,CAAC,IAAa;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YAErD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI;aACrB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;aAChE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7D,KAAK,GAAG,WAAW,GAAG,EAAE,OAAO,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAE3B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,KAAa;QAC1B,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAkB,EAAE,EAAE,CAClD,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAEjF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,IAA2E,EAC3E,SAAiB,EACjB,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAE,CAAC;IAE3E,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;AACzH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAkB,EAAE,MAAc,EAAE,EAAE,CACxE,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9C,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,MAAM,CAAC,EAAE,GAAG;IAChE,CAAC,CAAC,MAAM,CAAC,EAAE;QACT,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE;QAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAEnB,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAU,EAAE,KAAkB,EAAE,MAAc,EAAE,EAAE;IACnF,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC/B,OAAO,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAkB,EAAE,MAAc,EAAE,EAAE,CAC/D,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAW,CAAC;AAE9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAU,EAAE,KAAkB,EAAE,MAAc,EAAE,EAAE;IAC7F,MAAM,kBAAkB,GAAG,KAAK,CAAC,oBAAoB,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,IAAI;SAC1B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC;SACzC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;SAC7E,KAAK,EAAE,CAAC;IACX,MAAM,WAAW,GAAG,MAAM,IAAI;SAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC;SACzC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;SAC3E,KAAK,EAAE,CAAC;IAEX,OAAO,oBAAoB,CAAC,kBAAkB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,kBAAsC,EACtC,YAAoB,EACpB,YAAoB,EACpB,EAAE,CACF,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/resolvers/utils.ts"],"names":[],"mappings":"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"}
@@ -341,3 +341,152 @@ the reverse relation will automatically be `Post.comments`. With `reverse` this
341
341
  ### `onDelete`
342
342
 
343
343
  Only available on relation fields. Can be `"cascade"` (default), `"restrict"` or `"set-null"`.
344
+
345
+ ### `generateAs`
346
+
347
+ Only available on entity fields. Allows you to define fields that are computed from SQL expressions rather than stored directly. This option accepts an object with:
348
+
349
+ - `expression`: A SQL expression string that defines how the field is computed
350
+ - `type`: One of `'virtual'`, `'stored'`, or `'expression'`
351
+
352
+ #### `type: 'virtual'` and `type: 'stored'`
353
+
354
+ These types create SQL generated columns in the database. The difference is:
355
+
356
+ - **`'virtual'`**: The value is computed on-the-fly when queried (not stored in the database)
357
+ - **`'stored'`**: The value is computed and stored in the database (takes up space but faster queries)
358
+
359
+ Both types affect the SQL schema and create actual database columns.
360
+
361
+ Example:
362
+
363
+ ```ts
364
+ {
365
+ name: 'Product',
366
+ fields: [
367
+ {
368
+ name: 'price',
369
+ type: 'Float',
370
+ },
371
+ {
372
+ name: 'quantity',
373
+ type: 'Int',
374
+ },
375
+ {
376
+ name: 'totalPrice',
377
+ type: 'Float',
378
+ generateAs: {
379
+ expression: 'price * quantity',
380
+ type: 'stored'
381
+ }
382
+ }
383
+ ]
384
+ }
385
+ ```
386
+
387
+ This creates a `totalPrice` column in the database that is automatically computed as `price * quantity`. The expression can reference other columns in the same table.
388
+
389
+ #### `type: 'expression'`
390
+
391
+ This type creates a field that is **not** stored in the database schema. Instead, the expression is evaluated at query time during SELECT operations. This is useful for:
392
+
393
+ - Computed fields that don't need to be stored
394
+ - Fields that reference columns but shouldn't create database columns
395
+ - Dynamic calculations that should always use the latest data
396
+
397
+ Example:
398
+
399
+ ```ts
400
+ {
401
+ name: 'Product',
402
+ fields: [
403
+ {
404
+ name: 'price',
405
+ type: 'Float',
406
+ },
407
+ {
408
+ name: 'quantity',
409
+ type: 'Int',
410
+ },
411
+ {
412
+ name: 'totalPrice',
413
+ type: 'Float',
414
+ generateAs: {
415
+ expression: 'price * quantity',
416
+ type: 'expression'
417
+ },
418
+ filterable: true,
419
+ comparable: true,
420
+ orderable: true
421
+ }
422
+ ]
423
+ }
424
+ ```
425
+
426
+ This creates a `totalPrice` field that is computed at query time. The expression can reference other columns in the table, and column names in the expression are automatically resolved with proper table aliases.
427
+
428
+ **Important notes for `type: 'expression'`:**
429
+
430
+ - The field does **not** create a database column
431
+ - The expression is evaluated during SELECT queries
432
+ - Column references in the expression are automatically prefixed with the table alias
433
+ - Can be combined with `filterable`, `comparable`, `orderable`, and `searchable` options
434
+ - Works with all filter types (equality, arrays, null checks, comparisons)
435
+
436
+ **Expression examples:**
437
+
438
+ ```ts
439
+ // Simple calculation
440
+ {
441
+ name: 'totalPrice',
442
+ type: 'Float',
443
+ generateAs: {
444
+ expression: 'price * quantity',
445
+ type: 'expression'
446
+ }
447
+ }
448
+
449
+ // Using SQL functions
450
+ {
451
+ name: 'fullName',
452
+ type: 'String',
453
+ generateAs: {
454
+ expression: "COALESCE(firstName || ' ' || lastName, 'Unknown')",
455
+ type: 'expression'
456
+ }
457
+ }
458
+
459
+ // Conditional logic
460
+ {
461
+ name: 'discountedPrice',
462
+ type: 'Float',
463
+ generateAs: {
464
+ expression: 'CASE WHEN discount > 0 THEN price * (1 - discount) ELSE price END',
465
+ type: 'expression'
466
+ }
467
+ }
468
+ ```
469
+
470
+ **Filtering expression fields:**
471
+
472
+ When `filterable: true` is set on an expression field, you can filter by it:
473
+
474
+ ```graphql
475
+ query {
476
+ products(where: { totalPrice_GT: 100 }) {
477
+ totalPrice
478
+ }
479
+ }
480
+ ```
481
+
482
+ **Ordering expression fields:**
483
+
484
+ When `orderable: true` is set on an expression field, you can order by it:
485
+
486
+ ```graphql
487
+ query {
488
+ products(orderBy: [{ totalPrice: DESC }]) {
489
+ totalPrice
490
+ }
491
+ }
492
+ ```
@@ -20,9 +20,17 @@ Note: if you are in a `feat/<feature-name>` branch, the script will use that as
20
20
 
21
21
  This will generate a migration file in the `migrations` folder (without running the migration itself yet). Check whether it needs to be adapted.
22
22
 
23
+ ### Generated columns
24
+
25
+ Fields with `generateAs` are handled specially in migrations:
26
+
27
+ - **`type: 'virtual'` or `type: 'stored'`**: These create SQL `GENERATED ALWAYS AS` columns in the database. The migration generator will create these columns automatically.
28
+
29
+ - **`type: 'expression'`**: These fields do **not** create database columns. They are computed at query time and will not appear in migration files. This means you can add or remove expression fields without needing a migration.
30
+
23
31
  ## Running migrations
24
32
 
25
- Migrations themselves are managed with `knex` (see the [knex migration docs](https://knexjs.org/guide/migrations.html)).
33
+ Migrations themselves are managed with `knex` (see the [knex migration docs](https://knexjs.org/guide/migrations.html)).
26
34
 
27
35
  For example, to migrate to the latest version (using `env-cmd` to add db connection variables in `.env`):
28
36
 
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@smartive/graphql-magic",
3
- "version": "23.3.0",
3
+ "version": "23.4.0-next.4",
4
4
  "description": "",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/smartive/graphql-magic"
8
+ },
5
9
  "source": "src/index.ts",
6
10
  "type": "module",
7
11
  "module": "dist/esm/index.js",
@@ -12,6 +12,8 @@ import {
12
12
  getMigrationDate,
13
13
  printSchemaFromModels,
14
14
  } from '../..';
15
+ import { generateFunctionsFromDatabase } from '../../migrations/generate-functions';
16
+ import { updateFunctions } from '../../migrations/update-functions';
15
17
  import { DateLibrary } from '../../utils/dates';
16
18
  import { generateGraphqlApiTypes, generateGraphqlClientTypes } from './codegen';
17
19
  import { parseKnexfile } from './parse-knexfile';
@@ -76,7 +78,8 @@ program
76
78
 
77
79
  try {
78
80
  const models = await parseModels();
79
- const migrations = await new MigrationGenerator(db, models).generate();
81
+ const functionsPath = await getSetting('functionsPath');
82
+ const migrations = await new MigrationGenerator(db, models, functionsPath).generate();
80
83
 
81
84
  writeToFile(`migrations/${date || getMigrationDate()}_${name}.ts`, migrations);
82
85
  } finally {
@@ -93,7 +96,8 @@ program
93
96
 
94
97
  try {
95
98
  const models = await parseModels();
96
- const mg = new MigrationGenerator(db, models);
99
+ const functionsPath = await getSetting('functionsPath');
100
+ const mg = new MigrationGenerator(db, models, functionsPath);
97
101
  await mg.generate();
98
102
 
99
103
  if (mg.needsMigration) {
@@ -106,10 +110,41 @@ program
106
110
  });
107
111
 
108
112
  program
109
- .command('*', { noHelp: true })
113
+ .command('generate-functions')
114
+ .description('Generate functions.sql file from database')
115
+ .action(async () => {
116
+ const knexfile = await parseKnexfile();
117
+ const db = knex(knexfile);
118
+
119
+ try {
120
+ const functionsPath = await getSetting('functionsPath');
121
+ const functions = await generateFunctionsFromDatabase(db);
122
+ writeToFile(functionsPath, functions);
123
+ } finally {
124
+ await db.destroy();
125
+ }
126
+ });
127
+
128
+ program
129
+ .command('update-functions')
130
+ .description('Update database functions from functions.sql file')
131
+ .action(async () => {
132
+ const knexfile = await parseKnexfile();
133
+ const db = knex(knexfile);
134
+
135
+ try {
136
+ const functionsPath = await getSetting('functionsPath');
137
+ await updateFunctions(db, functionsPath);
138
+ } finally {
139
+ await db.destroy();
140
+ }
141
+ });
142
+
143
+ program
144
+ .command('*')
110
145
  .description('Invalid command')
111
- .action(() => {
112
- console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' '));
146
+ .action((command) => {
147
+ console.error(`Invalid command: ${command}\nSee --help for a list of available commands.`);
113
148
  process.exit(1);
114
149
  });
115
150
 
@@ -39,6 +39,13 @@ const DEFAULTS = {
39
39
  ensureFileExists(path, EMPTY_MODELS);
40
40
  },
41
41
  },
42
+ functionsPath: {
43
+ question: 'What is the PostgreSQL functions file path?',
44
+ defaultValue: 'src/config/functions.sql',
45
+ init: (path: string) => {
46
+ ensureFileExists(path, '-- PostgreSQL functions\n-- Add your CREATE FUNCTION statements here\n');
47
+ },
48
+ },
42
49
  generatedFolderPath: {
43
50
  question: 'What is the path for generated stuff?',
44
51
  defaultValue: 'src/generated',