feat: extension, triggers, functions, comments, parameters management in sql-tools (#17269)

feat: sql-tools extension, triggers, functions, comments, parameters
This commit is contained in:
Jason Rasmussen
2025-04-07 15:12:12 -04:00
committed by GitHub
parent 51c2c60231
commit e7a5b96ed0
170 changed files with 5205 additions and 2295 deletions

View File

@@ -0,0 +1,91 @@
import { transformTriggers } from 'src/sql-tools/to-sql/transformers/trigger.transformer';
import { describe, expect, it } from 'vitest';
describe(transformTriggers.name, () => {
describe('trigger.create', () => {
it('should work', () => {
expect(
transformTriggers({
type: 'trigger.create',
trigger: {
name: 'trigger1',
tableName: 'table1',
timing: 'before',
actions: ['update'],
scope: 'row',
functionName: 'function1',
synchronize: true,
},
reason: 'unknown',
}),
).toEqual(
`CREATE OR REPLACE TRIGGER "trigger1"
BEFORE UPDATE ON "table1"
FOR EACH ROW
EXECUTE FUNCTION function1();`,
);
});
it('should work with multiple actions', () => {
expect(
transformTriggers({
type: 'trigger.create',
trigger: {
name: 'trigger1',
tableName: 'table1',
timing: 'before',
actions: ['update', 'delete'],
scope: 'row',
functionName: 'function1',
synchronize: true,
},
reason: 'unknown',
}),
).toEqual(
`CREATE OR REPLACE TRIGGER "trigger1"
BEFORE UPDATE OR DELETE ON "table1"
FOR EACH ROW
EXECUTE FUNCTION function1();`,
);
});
it('should work with old/new reference table aliases', () => {
expect(
transformTriggers({
type: 'trigger.create',
trigger: {
name: 'trigger1',
tableName: 'table1',
timing: 'before',
actions: ['update'],
referencingNewTableAs: 'new',
referencingOldTableAs: 'old',
scope: 'row',
functionName: 'function1',
synchronize: true,
},
reason: 'unknown',
}),
).toEqual(
`CREATE OR REPLACE TRIGGER "trigger1"
BEFORE UPDATE ON "table1"
REFERENCING OLD TABLE AS "old" NEW TABLE AS "new"
FOR EACH ROW
EXECUTE FUNCTION function1();`,
);
});
});
describe('trigger.drop', () => {
it('should work', () => {
expect(
transformTriggers({
type: 'trigger.drop',
tableName: 'table1',
triggerName: 'trigger1',
reason: 'unknown',
}),
).toEqual(`DROP TRIGGER "trigger1" ON "table1";`);
});
});
});