CREATE OR REPLACE FUNCTION inline_0 () RETURNS integer AS $$
BEGIN
PERFORM acs_object_type__create_type (
'rss_gen_subscr', -- object_type
'RSS Generation Subscription', -- pretty_name
'RSS Generation Subscriptions', -- pretty_plural
'acs_object', -- supertype
'rss_gen_subscrs', -- table_name
'subscr_id', -- id_column
null, -- package_name
'f', -- abstract_p
null, -- type_extension_table
'rss_gen_subscr__name' -- name_method
);
return 0;
END;
$$ LANGUAGE plpgsql;
select inline_0 ();
drop function inline_0 ();
CREATE OR REPLACE FUNCTION inline_1 () RETURNS integer AS $$
BEGIN
PERFORM acs_attribute__create_attribute (
'rss_gen_subscr', -- object_type
'IMPL_ID', -- attribute_name
'integer', -- datatype
'Implementation ID', -- pretty_name
'Implementation IDs', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
'type_specific', -- storage
'f' -- static_p
);
PERFORM acs_attribute__create_attribute (
'rss_gen_subscr', -- object_type
'SUMMARY_CONTEXT_ID', -- attribute_name
'integer', -- datatype
'Context Identifier', -- pretty_name
'Context Identifiers', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
'type_specific', -- storage
'f' -- static_p
);
PERFORM acs_attribute__create_attribute (
'rss_gen_subscr', -- object_type
'TIMEOUT', -- attribute_name
'integer', -- datatype
'Timeout', -- pretty_name
'Timeouts', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
'type_specific', -- storage
'f' -- static_p
);
PERFORM acs_attribute__create_attribute (
'rss_gen_subscr', -- object_type
'LASTBUILD', -- attribute_name
'timestamp', -- datatype
'Last Build', -- pretty_name
'Last Builds', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
'type_specific', -- storage
'f' -- static_p
);
return 0;
END;
$$ LANGUAGE plpgsql;
select inline_1 ();
drop function inline_1 ();
create table rss_gen_subscrs (
subscr_id integer
constraint rss_gen_subscrs_id_fk
references acs_objects(object_id)
constraint rss_gen_subscrs_id_pk
primary key,
impl_id integer
constraint rss_gen_subscrs_impl_nn
not null
constraint rss_gen_subscrs_impl_fk
references acs_sc_impls(impl_id),
summary_context_id integer
constraint rss_gen_subscrs_ctx_nn
not null
constraint rss_gen_subscrs_ctx_fk
references acs_objects(object_id),
timeout integer
constraint rss_gen_subscrs_timeout_nn
not null,
lastbuild timestamptz,
last_ttb integer,
channel_title varchar(200),
channel_link varchar(1000),
constraint rss_gen_subscrs_impl_con_un
unique (impl_id,summary_context_id)
);
create index rss_gen_subscrs_lastbuild_idx on rss_gen_subscrs(lastbuild);
comment on table rss_gen_subscrs is '
Table for storing the different parts of the site we will generate
summaries for.
';
comment on column rss_gen_subscrs.subscr_id is '
Subscriptions are ACS objects. They will typically inherit
permission from a package instance.
';
comment on column rss_gen_subscrs.impl_id is '
The implementation which will provide summary information and
update status.
';
comment on column rss_gen_subscrs.summary_context_id is '
An identifier unique to the site section whose content is to be
summarized. A context identifier need not be a package instance
id. We will suggest a convention but the format is entirely up to
the implementors.
';
comment on column rss_gen_subscrs.timeout is '
The minimum number of seconds between summary builds.
';
comment on column rss_gen_subscrs.lastbuild is '
Accounting column for use by rss generation service.
';
comment on column rss_gen_subscrs.last_ttb is '
Another accounting column. The last time to build (in seconds).
';
comment on column rss_gen_subscrs.channel_title is '
Used for display purposes.
';
comment on column rss_gen_subscrs.channel_link is '
Used for display purposes.
';
-- old define_function_args ('rss_gen_subscr__new','p_subscr_id,p_impl_id,p_summary_context_id,p_timeout,p_lastbuild;now,p_object_type,p_creation_date;now,p_creation_user,p_creation_ip,p_context_id')
-- new
select define_function_args('rss_gen_subscr__new','p_subscr_id,p_impl_id,p_summary_context_id,p_timeout,p_lastbuild;now,p_object_type;rss_gen_subscr,p_creation_date;now,p_creation_user;null,p_creation_ip;null,p_context_id;null');
--
-- procedure rss_gen_subscr__new/10
--
CREATE OR REPLACE FUNCTION rss_gen_subscr__new(
p_subscr_id integer,
p_impl_id integer,
p_summary_context_id varchar,
p_timeout integer,
p_lastbuild timestamptz, -- default 'now'
p_object_type varchar, -- default 'rss_gen_subscr'
p_creation_date timestamptz, -- default now() -- default 'now'
p_creation_user integer, -- default null
p_creation_ip varchar, -- default null
p_context_id integer -- default null
) RETURNS integer AS $$
DECLARE
v_subscr_id rss_gen_subscrs.subscr_id%TYPE;
v_summary_context_id rss_gen_subscrs.summary_context_id%TYPE;
BEGIN
v_subscr_id := acs_object__new (
p_subscr_id,
p_object_type,
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id
);
if p_summary_context_id is null then
v_summary_context_id := v_subscr_id;
else
v_summary_context_id := p_summary_context_id;
end if;
insert into rss_gen_subscrs
(subscr_id, impl_id, summary_context_id, timeout, lastbuild)
values
(v_subscr_id, p_impl_id, v_summary_context_id, p_timeout, p_lastbuild);
return v_subscr_id;
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('rss_gen_subscr__name','subscr_id');
--
-- procedure rss_gen_subscr__name/1
--
CREATE OR REPLACE FUNCTION rss_gen_subscr__name(
p_subscr_id integer
) RETURNS varchar AS $$
DECLARE
BEGIN
return 'RSS Generation Subscription #' || p_subscr_id;
END;
$$ LANGUAGE plpgsql;
select define_function_args('rss_gen_subscr__del','subscr_id');
--
-- procedure rss_gen_subscr__del/1
--
CREATE OR REPLACE FUNCTION rss_gen_subscr__del(
p_subscr_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
delete from acs_permissions
where object_id = p_subscr_id;
delete from rss_gen_subscrs
where subscr_id = p_subscr_id;
raise NOTICE 'Deleting subscription...';
PERFORM acs_object__delete(p_subscr_id);
return 0;
END;
$$ LANGUAGE plpgsql;
-- added
select define_function_args('rss_gen_subscr__delete','subscr_id');
--
-- procedure rss_gen_subscr__delete/1
--
CREATE OR REPLACE FUNCTION rss_gen_subscr__delete(
p_subscr_id integer
) RETURNS integer AS $$
DECLARE
BEGIN
return rss_gen_subscr__del (p_subscr_id);
END;
$$ LANGUAGE plpgsql;