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/4.sql
CREATE OR REPLACE FUNCTION public.delete_unit_version_func ()
	RETURNS trigger
	LANGUAGE plpgsql
	VOLATILE
	CALLED ON NULL INPUT
	SECURITY INVOKER
	COST 1
	AS $$
DECLARE
	count integer;
	new_version bigint;
	item_table text;
	unit_table text;
	id_item integer;
	id_user integer;
BEGIN
	item_table = TG_TABLE_SCHEMA || '.item';
	unit_table = TG_TABLE_SCHEMA || '.unit';
	IF (TG_OP = 'DELETE') THEN
		id_item = OLD.id_item;
		EXECUTE format('SELECT id_user, count(*) FROM %s WHERE id_item = %L GROUP BY id_user', unit_table, id_item) INTO id_user, count;
		SELECT public.get_next_version_func(TG_TABLE_SCHEMA) INTO new_version;
		IF (count > 0) THEN
			EXECUTE format('UPDATE %s SET version = %L WHERE id_item = %L', unit_table, new_version, id_item);
		ELSE
			EXECUTE format('DELETE FROM %s WHERE id = %L', item_table, id_item);
		END IF;
		EXECUTE format('DELETE FROM index_queue WHERE id_user = %L and id_unit = %L', id_user, OLD.id);
		EXECUTE format('SELECT public.unit_update_normal_album_func(%L, %L)', TG_TABLE_SCHEMA, id_item);
		EXECUTE format('SELECT public.unit_update_condition_album_func(%L, %L)', TG_TABLE_SCHEMA, id_item);
	ELSIF (TG_OP = 'UPDATE' AND OLD.reindex_flag = NEW.reindex_flag) THEN
		id_item = OLD.id_item;
		IF (NEW.id_item != OLD.id_item) THEN
			EXECUTE format('SELECT public.unit_update_id_item_func(%L, %L, %L)', TG_TABLE_SCHEMA, id_item, NEW.id_item);
		END IF;
		IF (NEW.cache_key != OLD.cache_key) THEN
			EXECUTE format('SELECT public.unit_update_normal_album_func(%L, %L)', TG_TABLE_SCHEMA, id_item);
			EXECUTE format('SELECT public.unit_update_condition_album_func(%L, %L)', TG_TABLE_SCHEMA, id_item);
		END IF;
	END IF;
	RETURN NULL;
END
$$;