Skip to content

Commit fd719a3

Browse files
authored
Merge pull request #79 from djmarcin/master
Fix: Support triggers without WHEN
2 parents 3d5b76e + f4c2ed9 commit fd719a3

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

module-files/sql/11/trigger.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ SELECT
2020
(CASE WHEN (tgtype::int::bit(7) & b'0100000')::int = 0 THEN '' ELSE ' truncate' END)
2121
), ' ') AS "events", -- Array, Ex: {insert,delete,update}
2222

23-
(regexp_matches(pg_get_triggerdef(t.oid), '.{35,} WHEN \((.+)\) EXECUTE PROCEDURE'))[1] AS "condition",
23+
(SELECT regexp_matches[1] FROM regexp_matches(pg_get_triggerdef(t.oid), '.{35,} WHEN \((.+)\) EXECUTE PROCEDURE')) AS "condition",
2424

2525
CASE tgenabled
2626
WHEN 'O' THEN 'origin'

module-files/sql/12/trigger.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ SELECT
2020
(CASE WHEN (tgtype::int::bit(7) & b'0100000')::int = 0 THEN '' ELSE ' truncate' END)
2121
), ' ') AS "events", -- Array, Ex: {insert,delete,update}
2222

23-
(regexp_matches(pg_get_triggerdef(t.oid), '.{35,} WHEN \((.+)\) EXECUTE FUNCTION'))[1] AS "condition",
23+
(SELECT regexp_matches[1] FROM regexp_matches(pg_get_triggerdef(t.oid), '.{35,} WHEN \((.+)\) EXECUTE FUNCTION')) AS "condition",
2424

2525
CASE tgenabled
2626
WHEN 'O' THEN 'origin'

module-files/sql/9/trigger.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ SELECT
2020
(CASE WHEN (tgtype::int::bit(7) & b'0100000')::int = 0 THEN '' ELSE ' truncate' END)
2121
), ' ') AS "events", -- Array, Ex: {insert,delete,update}
2222

23-
(regexp_matches(pg_get_triggerdef(t.oid), '.{35,} WHEN \((.+)\) EXECUTE FUNCTION'))[1] AS "condition",
23+
(SELECT regexp_matches[1] FROM regexp_matches(pg_get_triggerdef(t.oid), '.{35,} WHEN \((.+)\) EXECUTE FUNCTION')) AS "condition",
2424

2525
CASE tgenabled
2626
WHEN 'O' THEN 'origin'

test/trigger.test.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,47 @@ import { Db, Trigger } from "../src/index";
22
import getDb from "./test-helper/get-db";
33

44
let db: Db;
5-
let trigger: Trigger;
5+
let accountTrigger: Trigger;
66

77
beforeAll(async () => {
88
db = await getDb();
9-
trigger = db.schemas.get("public").tables.get("account").triggers.get("account_trigger");
9+
accountTrigger = db.schemas.get("public").tables.get("account").triggers.get("account_trigger");
1010
});
1111

1212
describe("Trigger", () => {
13+
it("should exist.", () => {
14+
// Test that we can find a trigger with and without the WHEN clause.
15+
const withWhen = db.schemas.get("public").tables.get("account").triggers.get("account_trigger", { throwUnknown: false });
16+
expect(withWhen).not.toBeUndefined();
17+
const withoutWhen = db.schemas.get("public").tables.get("account").triggers.get("account_updated_at", { throwUnknown: false });
18+
expect(withoutWhen).not.toBeUndefined();
19+
});
20+
1321
it("should have name.", () => {
14-
expect(trigger.name).toBe("account_trigger");
22+
expect(accountTrigger.name).toBe("account_trigger");
1523
});
1624

1725
it("should have table.", () => {
18-
expect(trigger?.table?.name).toBe("account");
26+
expect(accountTrigger?.table?.name).toBe("account");
1927
});
2028

2129
it("should have view.", () => {
22-
expect(trigger?.view?.name).toBeUndefined();
30+
expect(accountTrigger?.view?.name).toBeUndefined();
2331
});
2432

2533
it("should have schema.", () => {
26-
expect(trigger.schema.name).toBe("public");
34+
expect(accountTrigger.schema.name).toBe("public");
2735
});
2836

2937
it("should have full name.", () => {
30-
expect(trigger.fullName).toBe("public.account.account_trigger");
38+
expect(accountTrigger.fullName).toBe("public.account.account_trigger");
3139
});
3240

3341
it("should have events.", () => {
34-
expect(trigger.events).toEqual(["insert", "delete", "update"]);
42+
expect(accountTrigger.events).toEqual(["insert", "delete", "update"]);
3543
});
3644

3745
it("should have function.", () => {
38-
expect(trigger.function.name).toBe("trigger_returning_function");
46+
expect(accountTrigger.function.name).toBe("trigger_returning_function");
3947
});
4048
});

0 commit comments

Comments
 (0)