-- @cvs-id $Id: content-search.sql,v 1.4.4.3 2002/10/04 08:08:20 jeffd Exp $ ------------------------------------------------------------ -- declare CR as a content provider for search/indexing interface ------------------------------------------------------------ select acs_sc_impl__new( 'FtsContentProvider', -- impl_contract_name 'content_revision', -- impl_name 'acs-content-repository' -- impl_owner_name ); select acs_sc_impl_alias__new( 'FtsContentProvider', -- impl_contract_name 'content_revision', -- impl_name 'datasource', -- impl_operation_name 'content_search__datasource', -- impl_alias 'TCL' -- impl_pl ); select acs_sc_impl_alias__new( 'FtsContentProvider', -- impl_contract_name 'content_revision', -- impl_name 'url', -- impl_operation_name 'content_search__url', -- impl_alias 'TCL' -- impl_pl ); select acs_sc_impl__new( 'FtsContentProvider', -- impl_contract_name 'image', -- impl_name 'acs-content-repository' -- impl_owner_name ); select acs_sc_impl_alias__new( 'FtsContentProvider', -- impl_contract_name 'image', -- impl_name 'datasource', -- impl_operation_name 'image_search__datasource', -- impl_alias 'TCL' -- impl_pl ); select acs_sc_impl_alias__new( 'FtsContentProvider', -- impl_contract_name 'image', -- impl_name 'url', -- impl_operation_name 'image_search__url', -- impl_alias 'TCL' -- impl_pl ); select acs_sc_impl__new( 'FtsContentProvider', -- impl_contract_name 'content_template', -- impl_name 'acs-content-repository' -- impl_owner_name ); select acs_sc_impl_alias__new( 'FtsContentProvider', -- impl_contract_name 'content_template', -- impl_name 'datasource', -- impl_operation_name 'template_search__datasource', -- impl_alias 'TCL' -- impl_pl ); select acs_sc_impl_alias__new( 'FtsContentProvider', -- impl_contract_name 'content_template', -- impl_name 'url', -- impl_operation_name 'template_search__url', -- impl_alias 'TCL' -- impl_pl ); -- triggers queue search interface to modify search index after content -- changes. -- DaveB: We only want to index live_revisions 2002-09-26 create function content_search__itrg () returns opaque as ' begin if (select live_revision from cr_items where item_id=new.item_id) = new.revision_id then perform search_observer__enqueue(new.revision_id,''INSERT''); end if; return new; end;' language 'plpgsql'; create function content_search__dtrg () returns opaque as ' declare v_live_revision integer; begin select into v_live_revision live_revision from cr_items where item_id=old.item_id; if old.revision_id=v_live_revision then perform search_observer__enqueue(old.revision_id,''DELETE''); end if; return old; end;' language 'plpgsql'; create function content_search__utrg () returns opaque as ' declare v_live_revision integer; begin select into v_live_revision live_revision from cr_items where item_id=old.revision_id; if old.revision_id=v_live_revision then insert into search_observer_queue ( object_id, event ) values ( old.revision_id, ''UPDATE'' ); end if; return new; end;' language 'plpgsql'; -- we need new triggers on cr_items to index when a live revision -- changes -DaveB 2002-09-26 create function content_item_search__utrg () returns opaque as ' begin if new.live_revision is not null and coalesce(old.live_revision,0) <> new.live_revision then perform search_observer__enqueue(new.live_revision,''INSERT''); end if; if old.live_revision is not null and old.live_revision <> coalesce(new.live_revision,0) then perform search_observer__enqueue(old.live_revision,''DELETE''); end if; return new; end;' language 'plpgsql'; create trigger content_search__itrg after insert on cr_revisions for each row execute procedure content_search__itrg (); create trigger content_search__dtrg after delete on cr_revisions for each row execute procedure content_search__dtrg (); create trigger content_search__utrg after update on cr_revisions for each row execute procedure content_search__utrg (); -- JCD: on create this trigger should not exist so lets not drop it -- drop trigger content_item_search__utrg on cr_items; create trigger content_item_search__utrg before update on cr_items for each row execute procedure content_item_search__utrg ();