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
$$;