From f9f0dbe24612e2f152836c013aaa12b77dbc9f6c Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Sun, 19 Feb 2023 08:55:18 +0400 Subject: [PATCH] Improve functions --- 20230219044854_improve_functions.down.sql | 21 ++++++++++++++++ 20230219044854_improve_functions.up.sql | 29 +++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 20230219044854_improve_functions.down.sql create mode 100644 20230219044854_improve_functions.up.sql diff --git a/20230219044854_improve_functions.down.sql b/20230219044854_improve_functions.down.sql new file mode 100644 index 0000000..333d701 --- /dev/null +++ b/20230219044854_improve_functions.down.sql @@ -0,0 +1,21 @@ +BEGIN; + +CREATE OR REPLACE FUNCTION is_sane_text(value TEXT) + RETURNS BOOLEAN + IMMUTABLE + PARALLEL SAFE + LANGUAGE plpgsql +AS $$BEGIN + RETURN value IS NOT NULL AND value = btrim(value) AND length(value) > 0; +END$$; + +CREATE OR REPLACE FUNCTION is_language_code(value VARCHAR) + RETURNS BOOLEAN + IMMUTABLE + PARALLEL SAFE + LANGUAGE plpgsql +AS $$BEGIN + RETURN value IS NOT NULL AND value ~ '^[a-z]{2}$'; +END$$; + +COMMIT; diff --git a/20230219044854_improve_functions.up.sql b/20230219044854_improve_functions.up.sql new file mode 100644 index 0000000..8955745 --- /dev/null +++ b/20230219044854_improve_functions.up.sql @@ -0,0 +1,29 @@ +BEGIN; + +CREATE OR REPLACE FUNCTION is_sane_text(value TEXT) + RETURNS BOOLEAN + IMMUTABLE + PARALLEL SAFE + LANGUAGE plpgsql +AS $$BEGIN + IF value IS NULL THEN + RETURN TRUE; + ELSE + RETURN value = btrim(value) AND length(value) > 0; + END IF; +END$$; + +CREATE OR REPLACE FUNCTION is_language_code(value VARCHAR) + RETURNS BOOLEAN + IMMUTABLE + PARALLEL SAFE + LANGUAGE plpgsql +AS $$BEGIN + IF value IS NULL THEN + RETURN TRUE; + ELSE + RETURN value ~ '^[a-z]{2}$'; + END IF; +END$$; + +COMMIT;