HEX
Server: Apache/2.4.63 (Unix)
System: Linux Synopilou92 4.4.302+ #72806 SMP Mon Jul 21 23:16:00 CST 2025 x86_64
User: pilou92 (1026)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /volume1/@appstore/SynologyPhotos/etc/sql/115.sql
CREATE OR REPLACE FUNCTION public.list_cover_for_id_folders(cover_limit integer, user_id integer, id_folders int[])
RETURNS TABLE (id_folder integer, id_unit integer[], cache_key text[])
AS $$
DECLARE
  folder_id integer;
  id_cover integer[];
  id_cover_cache_key text[];
BEGIN
  FOREACH folder_id IN ARRAY id_folders
  LOOP
    SELECT ARRAY_AGG(id), ARRAY_AGG(subquery.cache_key) INTO id_cover, id_cover_cache_key
    FROM (
      SELECT id, unit.cache_key
      FROM unit
      WHERE unit.id_folder = folder_id AND unit.is_major = TRUE AND unit.id_user = user_id
      ORDER BY id DESC
      LIMIT cover_limit
    ) AS subquery;
    RETURN QUERY SELECT folder_id, id_cover, id_cover_cache_key;
  END LOOP;
END;
$$ LANGUAGE plpgsql;
DROP INDEX IF EXISTS unit_id_user_id_folder_id_desc_idx;
CREATE INDEX unit_id_user_id_folder_id_desc_idx ON unit (id_user, id_folder, id DESC);