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/64.sql
CREATE OR REPLACE FUNCTION public.recalculate_person_album_item_count(user_id integer)
RETURNS VOID AS
$$
BEGIN
  INSERT INTO
  person_item_count (id_person, id_user, item_count)
    SELECT id_person, id_user, count(DISTINCT id_item) AS item_count
    FROM person_face_view
    WHERE id_user = user_id AND is_major = true AND id_person IS NOT NULL
    GROUP BY id_person, id_user
  ON CONFLICT(id_user, id_person) DO UPDATE
  SET
    (id_person, id_user, item_count) = (EXCLUDED.id_person, EXCLUDED.id_user, EXCLUDED.item_count);
  DELETE FROM person_item_count WHERE item_count = 0 AND id_user = user_id;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.recalculate_concept_album_additional(user_id integer)
RETURNS VOID AS
$$
BEGIN
  UPDATE concept_album_additional set item_count = 0 WHERE id_user = user_id;
  INSERT INTO
  concept_album_additional (id_concept, item_count, id_user)
  SELECT
    id_concept, COUNT(*) as item_count, user_id as id_user
  FROM
    many_unit_has_many_concept m
    JOIN unit on unit.id = m.id_unit
  WHERE
    m.id_user = user_id
    AND unit.is_major
  GROUP BY id_concept, m.id_user
  ON CONFLICT(id_user, id_concept) DO UPDATE
  SET
    (id_concept, item_count, id_user) = (EXCLUDED.id_concept, EXCLUDED.item_count, EXCLUDED.id_user);
END;
$$ LANGUAGE plpgsql;