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/65.sql
CREATE OR REPLACE FUNCTION public.create_temp_table_for_delete_task(task_id integer)
RETURNS VOID AS
$$
DECLARE
  temp_table_name TEXT;
BEGIN
  temp_table_name := 'temp_table_for_delete_task_' || task_id;
  EXECUTE 'CREATE TABLE ' || temp_table_name || ' (id INTEGER)';
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.insert_into_temp_table_for_delete_task(task_id integer, VARIADIC ids int[])
RETURNS VOID AS
$$
DECLARE
  sql_statement TEXT;
BEGIN
  sql_statement := 'INSERT INTO temp_table_for_delete_task_' || task_id || ' (id) VALUES ';
  sql_statement := sql_statement || '(' || array_to_string(ids, '),(') || ')';
  EXECUTE sql_statement;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.drop_temp_table_for_delete_task(task_id integer)
RETURNS VOID AS
$$
DECLARE
  temp_table_name TEXT;
BEGIN
  temp_table_name := 'temp_table_for_delete_task_' || task_id;
  EXECUTE 'DROP TABLE ' || temp_table_name;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.decrease_person_album_count_for_delete_bg_task(task_id integer, user_id integer)
RETURNS VOID AS
$$
DECLARE
  temp_table_name TEXT;
  query TEXT;
BEGIN
  temp_table_name := 'temp_table_for_delete_task_' || task_id;
  query := 'UPDATE person_item_count
  SET item_count = person_item_count.item_count - subquery.item_count
  FROM (
    SELECT id_person, id_user, COUNT(DISTINCT(id_item)) AS item_count
    FROM person_face_view
    WHERE id_user = ' || user_id || ' AND id_item IN (' || 'SELECT id FROM ' || quote_ident(temp_table_name) || ')
    GROUP BY id_person, id_user
  ) AS subquery
  WHERE person_item_count.id_person = subquery.id_person;';
  EXECUTE query;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.increase_person_album_count_by_item_id(item_id integer, user_id integer)
RETURNS VOID AS
$$
BEGIN
  UPDATE person_item_count
  SET item_count = item_count + subquery.count
  FROM (
    SELECT id_person, COUNT(DISTINCT(id_item)) AS count
    FROM person_face_view
    WHERE id_item = item_id AND id_user = user_id
    GROUP BY id_person
  ) AS subquery
  WHERE person_item_count.id_person = subquery.id_person;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.decrease_concept_album_count_for_delete_bg_task(task_id integer, user_id integer)
RETURNS VOID AS
$$
DECLARE
  temp_table_name TEXT;
  query TEXT;
BEGIN
  temp_table_name := 'temp_table_for_delete_task_' || task_id;
  query := 'UPDATE concept_album_additional
  SET item_count = item_count - subquery.count
  FROM (
    SELECT id_concept, m.id_user, COUNT(*) AS count
    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 AND unit.id_item IN (' || 'SELECT id FROM ' || quote_ident(temp_table_name) ||')
    GROUP BY id_concept, m.id_user
  ) AS subquery
  WHERE concept_album_additional.id_concept = subquery.id_concept AND concept_album_additional.id_user = subquery.id_user;';
  EXECUTE query;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION public.increase_concept_album_count_by_item_id(item_id integer, user_id integer)
RETURNS VOID AS
$$
BEGIN
  UPDATE concept_album_additional
  SET item_count = item_count + subquery.count
  FROM (
    SELECT id_concept, id_user, COUNT(*) AS count
    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 AND unit.id_item = item_id
    GROUP BY id_concept
  ) AS subquery
  WHERE concept_album_additional.id_concept = subquery.id_concept AND concept_album_additional.id_user = user_id;
END;
$$ LANGUAGE plpgsql;