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;
