@smartive/graphql-magic 23.8.0 → 23.9.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,5 +1,5 @@
1
- ## [23.8.0](https://github.com/smartive/graphql-magic/compare/v23.7.0...v23.8.0) (2026-03-06)
1
+ ## [23.9.0](https://github.com/smartive/graphql-magic/compare/v23.8.0...v23.9.0) (2026-03-06)
2
2
 
3
3
  ### Features
4
4
 
5
- * Exclude constraints and triggers ([#434](https://github.com/smartive/graphql-magic/issues/434)) ([133c65a](https://github.com/smartive/graphql-magic/commit/133c65ad32292d1fc4fa02cff5e895c6760d8e10))
5
+ * Add validation for constraint triggers in migration generator ([#435](https://github.com/smartive/graphql-magic/issues/435)) ([792429c](https://github.com/smartive/graphql-magic/commit/792429ceec123188f283b8b6c8aa2c0919326c43))
package/dist/bin/gqm.cjs CHANGED
@@ -1278,6 +1278,7 @@ var MigrationGenerator = class _MigrationGenerator {
1278
1278
  this.addExcludeConstraint(table, constraintName, entry);
1279
1279
  });
1280
1280
  } else if (entry.kind === "constraint_trigger") {
1281
+ this.validateConstraintTrigger(model, entry);
1281
1282
  const table = model.name;
1282
1283
  const constraintName = this.getConstraintName(model, entry, i);
1283
1284
  up.push(() => {
@@ -1384,6 +1385,7 @@ var MigrationGenerator = class _MigrationGenerator {
1384
1385
  });
1385
1386
  }
1386
1387
  } else if (entry.kind === "constraint_trigger") {
1388
+ this.validateConstraintTrigger(model, entry);
1387
1389
  const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
1388
1390
  const existing = existingTriggerMap?.get(constraintName);
1389
1391
  if (existing === void 0) {
@@ -2059,6 +2061,21 @@ var MigrationGenerator = class _MigrationGenerator {
2059
2061
  const executeClause = argsStr ? `EXECUTE FUNCTION ${entry.function.name}(${argsStr})` : `EXECUTE FUNCTION ${entry.function.name}()`;
2060
2062
  return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
2061
2063
  }
2064
+ validateConstraintTrigger(model, entry) {
2065
+ const fnName = entry.function.name;
2066
+ if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
2067
+ throw new Error(
2068
+ `Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`
2069
+ );
2070
+ }
2071
+ const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
2072
+ if (!defined) {
2073
+ const validList = this.parsedFunctions.map((pf) => pf.name).sort().join(", ");
2074
+ throw new Error(
2075
+ `Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || "(none)"}.`
2076
+ );
2077
+ }
2078
+ }
2062
2079
  addConstraintTrigger(table, constraintName, entry) {
2063
2080
  const eventsStr = entry.events.join(" OR ");
2064
2081
  const deferrableClause = entry.deferrable ? ` DEFERRABLE ${entry.deferrable}` : "";
@@ -3293,6 +3293,7 @@ var MigrationGenerator = class _MigrationGenerator {
3293
3293
  this.addExcludeConstraint(table, constraintName, entry);
3294
3294
  });
3295
3295
  } else if (entry.kind === "constraint_trigger") {
3296
+ this.validateConstraintTrigger(model, entry);
3296
3297
  const table = model.name;
3297
3298
  const constraintName = this.getConstraintName(model, entry, i);
3298
3299
  up.push(() => {
@@ -3399,6 +3400,7 @@ var MigrationGenerator = class _MigrationGenerator {
3399
3400
  });
3400
3401
  }
3401
3402
  } else if (entry.kind === "constraint_trigger") {
3403
+ this.validateConstraintTrigger(model, entry);
3402
3404
  const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
3403
3405
  const existing = existingTriggerMap?.get(constraintName);
3404
3406
  if (existing === void 0) {
@@ -4074,6 +4076,21 @@ var MigrationGenerator = class _MigrationGenerator {
4074
4076
  const executeClause = argsStr ? `EXECUTE FUNCTION ${entry.function.name}(${argsStr})` : `EXECUTE FUNCTION ${entry.function.name}()`;
4075
4077
  return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
4076
4078
  }
4079
+ validateConstraintTrigger(model, entry) {
4080
+ const fnName = entry.function.name;
4081
+ if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
4082
+ throw new Error(
4083
+ `Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`
4084
+ );
4085
+ }
4086
+ const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
4087
+ if (!defined) {
4088
+ const validList = this.parsedFunctions.map((pf) => pf.name).sort().join(", ");
4089
+ throw new Error(
4090
+ `Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || "(none)"}.`
4091
+ );
4092
+ }
4093
+ }
4077
4094
  addConstraintTrigger(table, constraintName, entry) {
4078
4095
  const eventsStr = entry.events.join(" OR ");
4079
4096
  const deferrableClause = entry.deferrable ? ` DEFERRABLE ${entry.deferrable}` : "";
@@ -58,6 +58,7 @@ export declare class MigrationGenerator {
58
58
  private addExcludeConstraint;
59
59
  private dropExcludeConstraint;
60
60
  private buildConstraintTriggerDef;
61
+ private validateConstraintTrigger;
61
62
  private addConstraintTrigger;
62
63
  private dropConstraintTrigger;
63
64
  private value;
@@ -197,6 +197,7 @@ export class MigrationGenerator {
197
197
  });
198
198
  }
199
199
  else if (entry.kind === 'constraint_trigger') {
200
+ this.validateConstraintTrigger(model, entry);
200
201
  const table = model.name;
201
202
  const constraintName = this.getConstraintName(model, entry, i);
202
203
  up.push(() => {
@@ -294,6 +295,7 @@ export class MigrationGenerator {
294
295
  }
295
296
  }
296
297
  else if (entry.kind === 'constraint_trigger') {
298
+ this.validateConstraintTrigger(model, entry);
297
299
  const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
298
300
  const existing = existingTriggerMap?.get(constraintName);
299
301
  if (existing === undefined) {
@@ -990,6 +992,20 @@ export class MigrationGenerator {
990
992
  : `EXECUTE FUNCTION ${entry.function.name}()`;
991
993
  return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
992
994
  }
995
+ validateConstraintTrigger(model, entry) {
996
+ const fnName = entry.function.name;
997
+ if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
998
+ throw new Error(`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`);
999
+ }
1000
+ const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
1001
+ if (!defined) {
1002
+ const validList = this.parsedFunctions
1003
+ .map((pf) => pf.name)
1004
+ .sort()
1005
+ .join(', ');
1006
+ throw new Error(`Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || '(none)'}.`);
1007
+ }
1008
+ }
993
1009
  addConstraintTrigger(table, constraintName, entry) {
994
1010
  const eventsStr = entry.events.join(' OR ');
995
1011
  const deferrableClause = entry.deferrable ? ` DEFERRABLE ${entry.deferrable}` : '';
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/migrations/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/migrations/generate.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,11 @@ const modelDefinitions: ModelDefinitions = [
7
7
  {
8
8
  kind: 'entity',
9
9
  name: 'User',
10
- fields: [
11
- ]
10
+ fields: [],
12
11
  },
13
- ]
12
+ ];
14
13
 
15
- export const models = new Models(modelDefinitions)
14
+ export const models = new Models(modelDefinitions);
16
15
  ```
17
16
 
18
17
  Models can have the following kinds:
@@ -86,9 +85,9 @@ the following GraphQL query becomes possible
86
85
 
87
86
  ```graphql
88
87
  query {
89
- post(where: { id: "bf9496bb-9302-4528-aebc-c97ae49c52fa"}) {
90
- title
91
- }
88
+ post(where: { id: "bf9496bb-9302-4528-aebc-c97ae49c52fa" }) {
89
+ title
90
+ }
92
91
  }
93
92
  ```
94
93
 
@@ -111,9 +110,9 @@ the following GraphQL query becomes possible
111
110
 
112
111
  ```graphql
113
112
  query {
114
- posts {
115
- title
116
- }
113
+ posts {
114
+ title
115
+ }
117
116
  }
118
117
  ```
119
118
 
@@ -137,7 +136,7 @@ Optional array of database constraints for this entity. Supported kinds: `check`
137
136
 
138
137
  - **`name`**: A short name for the constraint (used in migration constraint names).
139
138
  - **`expression`**: A PostgreSQL boolean expression. Column names **must** be double-quoted (e.g. `"score"`) so they are validated against the model’s columns.
140
- - **`message`** (optional): Human-readable message for when the constraint fails. Not used by graphql-magic; available for application-level error mapping.
139
+ - **`message`**: Human-readable message for when the constraint fails. Not used by graphql-magic; available for application-level error mapping.
141
140
  - **`deferrable`** (optional): `'INITIALLY DEFERRED'` or `'INITIALLY IMMEDIATE'`.
142
141
  - **`notValid`** (optional): When `true`, adds the constraint with `NOT VALID`, allowing zero-downtime migrations (existing rows are not validated; use `VALIDATE CONSTRAINT` later).
143
142
 
@@ -198,7 +197,7 @@ An enum that is available as type in the database:
198
197
 
199
198
  ## Raw enums
200
199
 
201
- An enum that is *not* available as type in the database:
200
+ An enum that is _not_ available as type in the database:
202
201
 
203
202
  ```ts
204
203
  {
@@ -238,7 +237,7 @@ Types that can be inherited from, e.g.
238
237
 
239
238
  ## Objects
240
239
 
241
- Custom types that *don't* correspond to database tables. To be used e.g. as return types for custom resolvers or JSON fields. These can also be used to extend `Query` or `Mutation` which are themselves of that type. E.g.
240
+ Custom types that _don't_ correspond to database tables. To be used e.g. as return types for custom resolvers or JSON fields. These can also be used to extend `Query` or `Mutation` which are themselves of that type. E.g.
242
241
 
243
242
  ```ts
244
243
  {
@@ -273,10 +272,10 @@ will make this query possible:
273
272
 
274
273
  ```graphql
275
274
  query {
276
- stats {
277
- usersCount
278
- postsCount
279
- }
275
+ stats {
276
+ usersCount
277
+ postsCount
278
+ }
280
279
  }
281
280
  ```
282
281
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartive/graphql-magic",
3
- "version": "23.8.0",
3
+ "version": "23.9.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -262,6 +262,7 @@ export class MigrationGenerator {
262
262
  this.addExcludeConstraint(table, constraintName, entry);
263
263
  });
264
264
  } else if (entry.kind === 'constraint_trigger') {
265
+ this.validateConstraintTrigger(model, entry);
265
266
  const table = model.name;
266
267
  const constraintName = this.getConstraintName(model, entry, i);
267
268
  up.push(() => {
@@ -387,6 +388,7 @@ export class MigrationGenerator {
387
388
  });
388
389
  }
389
390
  } else if (entry.kind === 'constraint_trigger') {
391
+ this.validateConstraintTrigger(model, entry);
390
392
  const newDef = this.normalizeTriggerDef(this.buildConstraintTriggerDef(table, constraintName, entry));
391
393
  const existing = existingTriggerMap?.get(constraintName);
392
394
  if (existing === undefined) {
@@ -1301,6 +1303,31 @@ export class MigrationGenerator {
1301
1303
  return `CREATE CONSTRAINT TRIGGER "${constraintName}" ${entry.when} ${eventsStr} ON "${table}"${deferrableClause} FOR EACH ${entry.forEach} ${executeClause}`;
1302
1304
  }
1303
1305
 
1306
+ private validateConstraintTrigger(
1307
+ model: EntityModel,
1308
+ entry: {
1309
+ name: string;
1310
+ function: { name: string; args?: string[] };
1311
+ },
1312
+ ): void {
1313
+ const fnName = entry.function.name;
1314
+ if (!this.parsedFunctions || this.parsedFunctions.length === 0) {
1315
+ throw new Error(
1316
+ `Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which must be defined in functions.ts. Ensure functions.ts exists and defines the function.`,
1317
+ );
1318
+ }
1319
+ const defined = this.parsedFunctions.find((pf) => pf.name === fnName);
1320
+ if (!defined) {
1321
+ const validList = this.parsedFunctions
1322
+ .map((pf) => pf.name)
1323
+ .sort()
1324
+ .join(', ');
1325
+ throw new Error(
1326
+ `Constraint trigger "${entry.name}" on model ${model.name} references function "${fnName}" which is not defined in functions.ts. Defined functions: ${validList || '(none)'}.`,
1327
+ );
1328
+ }
1329
+ }
1330
+
1304
1331
  private addConstraintTrigger(
1305
1332
  table: string,
1306
1333
  constraintName: string,
@@ -87,9 +87,7 @@ const baseColumnsByTable: Record<string, MockColumn[]> = {
87
87
  ],
88
88
  };
89
89
 
90
- const createProductModels = (
91
- constraints: { kind: 'check'; name: string; expression: string; notValid?: boolean }[],
92
- ) => {
90
+ const createProductModels = (constraints: { kind: 'check'; name: string; expression: string; notValid?: boolean }[]) => {
93
91
  const definitions: ModelDefinitions = [
94
92
  {
95
93
  kind: 'entity',
@@ -163,9 +161,7 @@ describe('MigrationGenerator check constraints', () => {
163
161
  it('does not detect changes for equivalent expressions with quoted vs unquoted lowercase identifiers', async () => {
164
162
  jest
165
163
  .spyOn(MigrationGenerator.prototype as any, 'canonicalizeCheckExpressionWithPostgres')
166
- .mockImplementation(
167
- async () => '(deleted = true) OR ("endDate" IS NULL) OR ("startDate" <= "endDate")',
168
- );
164
+ .mockImplementation(async () => '(deleted = true) OR ("endDate" IS NULL) OR ("startDate" <= "endDate")');
169
165
  const models = new Models([
170
166
  {
171
167
  kind: 'entity',
@@ -258,9 +254,7 @@ describe('MigrationGenerator check constraints', () => {
258
254
 
259
255
  const migration = await generator.generate();
260
256
 
261
- expect(migration).toContain(
262
- 'ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID',
263
- );
257
+ expect(migration).toContain('ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID');
264
258
  });
265
259
 
266
260
  it('detects when notValid has changed', async () => {
@@ -283,9 +277,7 @@ describe('MigrationGenerator check constraints', () => {
283
277
 
284
278
  expect(generator.needsMigration).toBe(true);
285
279
  expect(migration).toContain('DROP CONSTRAINT "Product_score_non_negative_check_0"');
286
- expect(migration).toContain(
287
- 'ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID',
288
- );
280
+ expect(migration).toContain('ADD CONSTRAINT "Product_score_non_negative_check_0" CHECK ("score" >= 0) NOT VALID');
289
281
  });
290
282
 
291
283
  it('warns and treats constraint as changed when canonicalization fails', async () => {
@@ -354,6 +346,77 @@ describe('MigrationGenerator exclude constraints', () => {
354
346
  });
355
347
  });
356
348
 
349
+ describe('MigrationGenerator constraint_trigger validation', () => {
350
+ const triggerModels = new Models([
351
+ {
352
+ kind: 'entity',
353
+ name: 'PortfolioAllocation',
354
+ fields: [
355
+ { name: 'portfolioId', type: 'UUID' },
356
+ { name: 'startDate', type: 'DateTime' },
357
+ { name: 'endDate', type: 'DateTime' },
358
+ ],
359
+ constraints: [
360
+ {
361
+ kind: 'constraint_trigger' as const,
362
+ name: 'contiguous_periods',
363
+ when: 'AFTER' as const,
364
+ events: ['INSERT', 'UPDATE'] as const,
365
+ forEach: 'ROW' as const,
366
+ deferrable: 'INITIALLY DEFERRED' as const,
367
+ function: { name: 'contiguous_periods_check' },
368
+ },
369
+ ],
370
+ },
371
+ ]);
372
+
373
+ const parsedFunctionsWithMatch = [
374
+ { name: 'contiguous_periods_check', signature: '', body: '', fullDefinition: '', isAggregate: false },
375
+ ];
376
+
377
+ const parsedFunctionsWithoutMatch = [
378
+ { name: 'other_function', signature: '', body: '', fullDefinition: '', isAggregate: false },
379
+ ];
380
+
381
+ const createTriggerGenerator = (
382
+ parsedFunctions: { name: string; signature: string; body: string; fullDefinition: string; isAggregate: boolean }[],
383
+ ) => {
384
+ const raw = jest.fn().mockResolvedValue({ rows: [] });
385
+ const knexMock = Object.assign(
386
+ jest.fn().mockReturnValue({
387
+ where: jest.fn().mockReturnValue({ select: jest.fn().mockResolvedValue([]) }),
388
+ }),
389
+ { raw },
390
+ );
391
+ const generator = new MigrationGenerator(knexMock as never, triggerModels, parsedFunctions);
392
+ (generator as unknown as { schema: unknown }).schema = {
393
+ knex: knexMock,
394
+ tables: jest.fn().mockResolvedValue([]),
395
+ columnInfo: jest.fn().mockResolvedValue([]),
396
+ };
397
+ return generator;
398
+ };
399
+
400
+ it('throws when function is not defined in functions.ts', async () => {
401
+ const generator = createTriggerGenerator(parsedFunctionsWithoutMatch);
402
+ await expect(generator.generate()).rejects.toThrow(
403
+ /Constraint trigger "contiguous_periods" on model PortfolioAllocation references function "contiguous_periods_check" which is not defined in functions.ts/,
404
+ );
405
+ });
406
+
407
+ it('throws when functions.ts is empty or missing', async () => {
408
+ const generator = createTriggerGenerator([]);
409
+ await expect(generator.generate()).rejects.toThrow(
410
+ /references function "contiguous_periods_check" which must be defined in functions.ts/,
411
+ );
412
+ });
413
+
414
+ it('does not throw when function is defined in functions.ts', async () => {
415
+ const generator = createTriggerGenerator(parsedFunctionsWithMatch);
416
+ await expect(generator.generate()).resolves.not.toThrow();
417
+ });
418
+ });
419
+
357
420
  describe('MigrationGenerator canonicalizeCheckExpressionWithPostgres', () => {
358
421
  afterEach(() => {
359
422
  jest.restoreAllMocks();