From ebcaa6f9be5e02e8b7b6c2ea0546538782e85cac Mon Sep 17 00:00:00 2001 From: exAspArk Date: Tue, 16 Jan 2024 21:12:03 -0500 Subject: [PATCH] Make it work with PostgreSQL v13 --- CHANGELOG.md | 4 ++++ package.json | 2 +- src/cli.ts | 29 ++++++++++++++++++++++------- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcaff58..d4b9ff2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +#### [v0.2.2](https://github.com/BemiHQ/bemi-prisma/compare/v0.2.1...v0.2.2) - 2024-01-16 + +- Fix migration generation to work with PostgreSQL versions less than 14 + #### [v0.2.1](https://github.com/BemiHQ/bemi-prisma/compare/v0.2.0...v0.2.1) - 2024-01-04 - Fix migration generation to work with table names containing double quotes diff --git a/package.json b/package.json index 052f8d4..2f3ae9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bemi-db/prisma", - "version": "0.2.1", + "version": "0.2.2", "description": "Automatic data change tracking for Prisma", "main": "dist/index.js", "module": "./dist/index.mjs", diff --git a/src/cli.ts b/src/cli.ts index c9c2369..b316d9b 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -27,16 +27,31 @@ CREATE OR REPLACE PROCEDURE _bemi_create_triggers() AS $$ DECLARE current_tablename TEXT; + pg_major_version INT; BEGIN + pg_major_version := (SELECT SPLIT_PART(setting, '.', 1)::INT FROM pg_settings WHERE name = 'server_version'); FOR current_tablename IN SELECT tablename FROM pg_tables WHERE schemaname = 'public' LOOP - EXECUTE format( - 'CREATE OR REPLACE TRIGGER _bemi_row_trigger_%s - BEFORE INSERT OR UPDATE OR DELETE ON %I FOR EACH ROW - EXECUTE FUNCTION _bemi_row_trigger_func()', - current_tablename, current_tablename - ); + IF (pg_major_version >= 14) THEN + EXECUTE format( + 'CREATE OR REPLACE TRIGGER _bemi_row_trigger_%s + BEFORE INSERT OR UPDATE OR DELETE ON %I FOR EACH ROW + EXECUTE FUNCTION _bemi_row_trigger_func()', + current_tablename, current_tablename + ); + ELSE + EXECUTE format( + 'DROP TRIGGER IF EXISTS _bemi_row_trigger_%s ON %I', + current_tablename, current_tablename + ); + EXECUTE format( + 'CREATE TRIGGER _bemi_row_trigger_%s + BEFORE INSERT OR UPDATE OR DELETE ON %I FOR EACH ROW + EXECUTE FUNCTION _bemi_row_trigger_func()', + current_tablename, current_tablename + ); + END IF; END LOOP; END; $$ LANGUAGE plpgsql; @@ -72,7 +87,7 @@ const generateMigrationFile = async () => { const program = new Command(); -program.name("bemi").description("CLI to Bemi utilities").version("0.2.1"); +program.name("bemi").description("CLI to Bemi utilities").version("0.2.2"); program. command("migration:create").