-- Search Observer Package
--
-- @cvs-id $Id: search-packages-create.sql,v 1.7.6.1 2021/03/01 18:20:47 gustafn Exp $
--
-- procedure search_observer__enqueue/2
--
select define_function_args('search_observer__enqueue','object_id,event');
CREATE OR REPLACE FUNCTION search_observer__enqueue(
p_object_id integer,
p_event varchar
) RETURNS integer AS $$
DECLARE
BEGIN
--
-- We see cases, where the object to be removed from the observer
-- queue does not exist anymore. Probably, this is due to some
-- race condition.
--
if p_event = 'DELETE' then
IF NOT EXISTS (select 1 from acs_objects where object_id = p_object_id) then
return 0;
end if;
end if;
insert into search_observer_queue (
object_id,
event
) values (
p_object_id,
p_event
);
return 0;
END;
$$ LANGUAGE plpgsql;
--
-- procedure search_observer__dequeue/3
--
CREATE OR REPLACE FUNCTION search_observer__dequeue(
p_object_id integer,
p_event_date timestamptz,
p_event varchar
) RETURNS integer AS $$
DECLARE
BEGIN
delete from search_observer_queue
where object_id = p_object_id
and event = p_event
and to_char(event_date,'yyyy-mm-dd hh24:mi:ss.us-tz') = to_char(p_event_date,'yyyy-mm-dd hh24:mi:ss.us-tz');
return 0;
END;
$$ LANGUAGE plpgsql;
select define_function_args('search_observer__dequeue','object_id,event_date,event');