Index: openacs-4/packages/news-aggregator/sql/postgresql/news-aggregator-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator/sql/postgresql/news-aggregator-create.sql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator/sql/postgresql/news-aggregator-create.sql 28 Aug 2003 09:41:57 -0000 1.2 @@ -0,0 +1,192 @@ + +select acs_object_type__create_type ( + 'na_source', -- object_type + 'Sources', -- pretty_name + 'Sources', -- pretty_plural + 'acs_object', -- supertype + 'na_sources', -- table_name + 'source_id', -- id_column + null, -- package_name + 'f', -- abstract_p + null, -- type_extension_table + 'na_source.title' -- name_method +); + + +create table na_sources ( + source_id integer + constraint na_sources_source_id_fk + references acs_objects(object_id) + constraint na_sources_source_id_pk + primary key, + package_id integer + constraint na_sources_package_id_fk + references apm_packages(package_id), + owner_id integer + constraint na_sources_owner_id_fk + references users(user_id), + feed_url varchar(100) + constraint na_sources_feed_url_nn + not null, + link varchar(100), + title varchar(100), + description varchar(255), + updates integer, + last_scanned timestamp, + last_modified varchar(30) +); + +create table na_items ( + item_id integer + default nextval('na_items_item_id_seq') + primary key, + source_id integer + constraint na_items_source_id_fk + references na_sources (source_id), + link varchar(255), + title varchar(255), + description text, + creation_date timestamp, + deleted_p boolean +); + +create sequence na_items_item_id_seq; + +create or replace function na_source__new ( + integer, -- source_id + integer, -- package_id + integer, -- owner_id + varchar, -- feed_url + varchar, -- link + varchar, -- title + varchar, -- description + integer, -- updates + timestamp, -- last_scanned + varchar, -- last_modified + varchar, -- object_type + integer, -- creation_user + varchar -- creation_ip +) returns integer as ' +declare + p_source_id alias for $1; + p_package_id alias for $2; + p_owner_id alias for $3; + p_feed_url alias for $4; + p_link alias for $5; + p_title alias for $6; + p_description alias for $7; + p_updates alias for $8; + p_last_scanned alias for $9; + p_last_modified alias for $10; + p_object_type alias for $11; + p_creation_user alias for $12; + p_creation_ip alias for $13; + v_source_id integer; +begin + v_source_id := acs_object__new ( + p_source_id, + p_object_type, + current_timestamp, + p_creation_user, + p_creation_ip, + p_package_id + ); + + insert into na_sources ( + source_id, + package_id, + owner_id, + feed_url, + link, + title, + description, + updates, + last_scanned, + last_modified + ) values ( + v_source_id, + p_package_id, + p_owner_id, + p_feed_url, + p_link, + p_title, + p_description, + p_updates, + p_last_scanned, + p_last_modified + ); + + PERFORM acs_permission__grant_permission( + v_source_id, + p_owner_id, + ''admin'' + ); + + return v_source_id; + +end;' language 'plpgsql'; + +create or replace function na_source__delete ( + integer -- source_id +) +returns integer as ' +declare + p_source_id alias for $1; +begin + + delete from na_items + where source_id = p_source_id; + + delete from acs_permissions + where object_id = p_source_id; + + delete from na_sources + where source_id = p_source_id; + + raise NOTICE ''Deleting na_source and its belonging items...''; + PERFORM acs_object__delete(p_source_id); + + return 0; + +end;' language 'plpgsql'; + +create or replace function na_item__new ( + integer, -- source_id + varchar, -- link + varchar, -- title + varchar, -- description + timestamp, -- creation_date + boolean -- deleted_p +) returns integer as ' +declare + p_source_id alias for $1; + p_link alias for $2; + p_title alias for $3; + p_description alias for $4; + p_creation_date alias for $5; + p_deleted_p alias for $6; +begin + + insert into na_items + (source_id, link, title, description, creation_date, deleted_p) + values + (p_source_id, p_link, p_title, p_description, p_creation_date, p_deleted_p); + + return 1; + +end;' language 'plpgsql'; + +create or replace function na_source__title (integer) +returns varchar as ' +declare + p_source_id alias for $1; + v_source_title na_sources.title%TYPE; +begin + select title + into v_source_title + from na_sources + where source_id = p_source_id; + + return v_source_title; +end; +' language 'plpgsql';