--
-- search_observer__enqueue/2
--
create or replace function search_observer__enqueue(
  p_object_id integer,
  p_event character varying
) returns int4 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;