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;
