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;