CREATE OR REPLACE FUNCTION get_feed_data(feed_key TEXT) RETURNS JSON AS $$ DECLARE result JSON; sql_query TEXT; BEGIN CASE feed_key WHEN 'movies' THEN sql_query := 'SELECT json_agg(feed ORDER BY (feed->>''date'')::timestamp DESC) FROM optimized_movies WHERE feed IS NOT NULL'; WHEN 'books' THEN sql_query := 'SELECT json_agg(feed ORDER BY (feed->>''date'')::timestamp DESC) FROM optimized_books WHERE feed IS NOT NULL'; WHEN 'posts' THEN sql_query := 'SELECT json_agg(feed ORDER BY (feed->>''date'')::timestamp DESC) FROM optimized_posts WHERE feed IS NOT NULL'; WHEN 'links' THEN sql_query := 'SELECT json_agg(feed ORDER BY (feed->>''date'')::timestamp DESC) FROM optimized_links WHERE feed IS NOT NULL'; WHEN 'allActivity' THEN sql_query := 'SELECT json_agg(feed ORDER BY (feed->>''date'')::timestamp DESC) FROM optimized_all_activity WHERE feed IS NOT NULL'; WHEN 'syndication' THEN sql_query := 'SELECT json_agg(feed ORDER BY (feed->>''date'')::timestamp DESC) FROM optimized_syndication WHERE feed IS NOT NULL'; ELSE RETURN NULL; END CASE; EXECUTE sql_query INTO result; RETURN result; END; $$ LANGUAGE plpgsql;