File: /volume1/@appstore/SynologyPhotos/etc/sql/29.sql
ALTER TABLE public.album
ADD COLUMN start_time bigint,
ADD COLUMN end_time bigint;
CREATE OR REPLACE VIEW public.share_album_view
AS
SELECT album.id,
album.id_user,
album.name,
album.type,
album.shared,
album.create_time,
album.cover,
album.sort_by,
album.sort_direction,
album.passphrase_share,
album.version,
album.item_count,
share.modified_time,
album.normalized_name,
album.start_time,
album.end_time
FROM album, share
WHERE album.passphrase_share = share.passphrase;
CREATE OR REPLACE FUNCTION public.get_unit_takentime_by_condition_album ( id_album integer)
RETURNS TABLE ( max bigint, min bigint)
LANGUAGE plpgsql
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 1
AS $$
DECLARE
unit_table text;
item_table text;
BEGIN
unit_table = 'public.unit';
item_table = 'public.condition_album_item_' || id_album;
RETURN QUERY EXECUTE 'SELECT MAX(takentime), MIN(takentime) FROM ' || unit_table || ' WHERE id_item IN(
SELECT id_item FROM '|| item_table ||')';
END;
$$;
CREATE OR REPLACE FUNCTION public.insert_item_to_update_condition_album_func ( id_album integer)
RETURNS void
LANGUAGE plpgsql
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 1
AS $$
DECLARE
item_table text;
condition_album_table text;
max_time bigint;
min_time bigint;
count integer;
BEGIN
condition_album_table = 'public.condition_album';
item_table = 'public.condition_album_item_' || id_album;
EXECUTE 'SELECT count(*) FROM ' || item_table INTO count;
EXECUTE format('SELECT COALESCE(max, 0), COALESCE(min, 0) FROM public.get_unit_takentime_by_condition_album(%L)', id_album) INTO max_time, min_time;
EXECUTE 'UPDATE ' || condition_album_table || ' SET start_time = ' || min_time || ', end_time = ' || max_time || ', item_count = ' || count || ' WHERE id = ' || id_album;
END;
$$;