Annotation: localization.get_localization_table

CREATE OR REPLACE FUNCTION localization.get_localization_table(culture_code text)
RETURNS TABLE(row_number bigint, key text, invariant_resource text, value text)

Information: localization.get_localization_table

Schema localization
Function Name get_localization_table
Arguments culture_code text
Owner postgres
Result Type TABLE(row_number bigint, key text, invariant_resource text, value text)
Description

Implementation: localization.get_localization_table

CREATE OR REPLACE FUNCTION localization.get_localization_table(culture_code text)
 RETURNS TABLE(row_number bigint, key text, invariant_resource text, value text)
 LANGUAGE plpgsql
AS $function$
BEGIN   
    CREATE TEMPORARY TABLE t
    (
        key                 text,
        invariant_resource  text,
        value               text
    );
    INSERT INTO t(key, invariant_resource, value)
    SELECT
        DISTINCT localization.resources.key,
        localization.resources.value as invariant_resource,
        localization.localized_resources.value
    FROM localization.resources
    LEFT JOIN localization.localized_resources
    ON localization.resources.key = localization.localized_resources.key
    AND localization.localized_resources.culture_code = $1;

    RETURN QUERY 
    SELECT 
        row_number() OVER(ORDER BY t.key ~ '^[[:upper:]][^[:upper:]]' DESC, t.key),
        t.key,
        t.invariant_resource,
        t.value
    FROM t
    ORDER BY t.key ~ '^[[:upper:]][^[:upper:]]' DESC, t.key;
END
$function$