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/57.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
    person.id AS id_person,
    user_id as id_user,
    (
      SELECT
        COUNT(DISTINCT(id_item))
      FROM
        person_face_view
      WHERE
        id_user = user_id
        AND id_person = person.id
        AND is_major
    ) as item_count
  FROM
    person
  WHERE
    id_user = user_id
  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 INDEX id_cluster_idx ON public.person_group (id_cluster);
CREATE OR REPLACE FUNCTION public.delete_redundant_person_data(user_id integer)
RETURNS VOID AS
$$
BEGIN
  DELETE FROM person_group
  WHERE id_user = user_id AND
        NOT EXISTS (SELECT 1 FROM face WHERE face.id_person_group = person_group.id);
  DELETE FROM cluster
  WHERE id_user = user_id AND
        NOT EXISTS (SELECT 1 FROM person_group WHERE person_group.id_cluster = cluster.id);
  DELETE FROM person
  WHERE id_user = user_id AND
        NOT EXISTS (SELECT 1 FROM cluster WHERE cluster.id_person = person.id);
END;
$$ LANGUAGE plpgsql;