insert into acs_datatypes (datatype, max_n_values) values ('file', 1); alter table apm_package_dependencies drop constraint apm_package_deps_type_ck; alter table apm_package_dependencies add constraint apm_package_deps_type_ck check (dependency_type in ('provides', 'requires', 'extends')); -- function add_dependency create or replace function apm_package_version__add_dependency (varchar,integer,integer,varchar,varchar) returns integer as ' declare add_dependency__dependency_type alias for $1; add_dependency__dependency_id alias for $2; -- default null add_dependency__version_id alias for $3; add_dependency__dependency_uri alias for $4; add_dependency__dependency_version alias for $5; v_dep_id apm_package_dependencies.dependency_id%TYPE; begin if add_dependency__dependency_id is null then select nextval(''t_acs_object_id_seq'') into v_dep_id from dual; else v_dep_id := add_dependency__dependency_id; end if; insert into apm_package_dependencies (dependency_id, version_id, dependency_type, service_uri, service_version) values (v_dep_id, add_dependency__version_id, add_dependency__dependency_type, add_dependency__dependency_uri, add_dependency__dependency_version); return v_dep_id; end;' language 'plpgsql'; alter table apm_package_types add implements_subsite_p boolean default 'f'; update apm_package_types set implements_subsite_p = 't' where package_key = 'acs-subsite'; alter table apm_package_types add inherit_templates_p boolean default 't'; drop view apm_enabled_package_versions; drop view apm_package_version_info; create or replace view apm_package_version_info as select v.package_key, t.package_uri, t.pretty_name, t.singleton_p, t.initial_install_p, t.inherit_templates_p, t.implements_subsite_p, v.version_id, v.version_name, v.version_uri, v.summary, v.description_format, v.description, v.release_date, v.vendor, v.vendor_uri, v.auto_mount, v.enabled_p, v.installed_p, v.tagged_p, v.imported_p, v.data_model_loaded_p, v.activation_date, v.deactivation_date, coalesce(v.content_length,0) as tarball_length, distribution_uri, distribution_date from apm_package_types t, apm_package_versions v where v.package_key = t.package_key; -- A useful view for simply determining which packages are eanbled. create view apm_enabled_package_versions as select * from apm_package_version_info where enabled_p = 't'; create or replace function apm__register_package (varchar,varchar,varchar,varchar,varchar,boolean,boolean,boolean,boolean,varchar,integer) returns integer as ' declare package_key alias for $1; pretty_name alias for $2; pretty_plural alias for $3; package_uri alias for $4; package_type alias for $5; initial_install_p alias for $6; -- default ''f'' singleton_p alias for $7; -- default ''f'' implements_subsite_p alias for $8; -- default ''f'' inherit_templates_p alias for $9; -- default ''f'' spec_file_path alias for $10; -- default null spec_file_mtime alias for $11; -- default null begin PERFORM apm_package_type__create_type( package_key, pretty_name, pretty_plural, package_uri, package_type, initial_install_p, singleton_p, implements_subsite_p, inherit_templates_p, spec_file_path, spec_file_mtime ); return 0; end;' language 'plpgsql'; -- function update_package create or replace function apm__update_package (varchar,varchar,varchar,varchar,varchar,boolean,boolean,boolean,boolean,varchar,integer) returns varchar as ' declare package_key alias for $1; pretty_name alias for $2; -- default null pretty_plural alias for $3; -- default null package_uri alias for $4; -- default null package_type alias for $5; -- default null initial_install_p alias for $6; -- default null singleton_p alias for $7; -- default null implements_subsite_p alias for $8; -- default ''f'' inherit_templates_p alias for $9; -- default ''f'' spec_file_path alias for $10; -- default null spec_file_mtime alias for $11; -- default null begin return apm_package_type__update_type( package_key, pretty_name, pretty_plural, package_uri, package_type, initial_install_p, singleton_p, implements_subsite_p, inherit_templates_p, spec_file_path, spec_file_mtime ); end;' language 'plpgsql'; create or replace function apm_package_type__create_type (varchar,varchar,varchar,varchar,varchar,boolean,boolean,boolean,boolean,varchar,integer) returns integer as ' declare create_type__package_key alias for $1; create_type__pretty_name alias for $2; create_type__pretty_plural alias for $3; create_type__package_uri alias for $4; create_type__package_type alias for $5; create_type__initial_install_p alias for $6; create_type__singleton_p alias for $7; create_type__implements_subsite_p alias for $8; create_type__inherit_templates_p alias for $9; create_type__spec_file_path alias for $10; -- default null create_type__spec_file_mtime alias for $11; -- default null begin insert into apm_package_types (package_key, pretty_name, pretty_plural, package_uri, package_type, spec_file_path, spec_file_mtime, initial_install_p, singleton_p, implements_subsite_p, inherit_templates_p) values (create_type__package_key, create_type__pretty_name, create_type__pretty_plural, create_type__package_uri, create_type__package_type, create_type__spec_file_path, create_type__spec_file_mtime, create_type__initial_install_p, create_type__singleton_p, create_type__implements_subsite_p, create_type__inherit_templates_p); return 0; end;' language 'plpgsql'; -- function update_type create or replace function apm_package_type__update_type (varchar,varchar,varchar,varchar,varchar,boolean,boolean,boolean,boolean,varchar,integer) returns varchar as ' declare update_type__package_key alias for $1; update_type__pretty_name alias for $2; -- default null update_type__pretty_plural alias for $3; -- default null update_type__package_uri alias for $4; -- default null update_type__package_type alias for $5; -- default null update_type__initial_install_p alias for $6; -- default null update_type__singleton_p alias for $7; -- default null update_type__implements_subsite_p alias for $8; update_type__inherit_templates_p alias for $9; update_type__spec_file_path alias for $10; -- default null update_type__spec_file_mtime alias for $11; -- default null begin UPDATE apm_package_types SET pretty_name = coalesce(update_type__pretty_name, pretty_name), pretty_plural = coalesce(update_type__pretty_plural, pretty_plural), package_uri = coalesce(update_type__package_uri, package_uri), package_type = coalesce(update_type__package_type, package_type), spec_file_path = coalesce(update_type__spec_file_path, spec_file_path), spec_file_mtime = coalesce(update_type__spec_file_mtime, spec_file_mtime), singleton_p = coalesce(update_type__singleton_p, singleton_p), initial_install_p = coalesce(update_type__initial_install_p, initial_install_p), implements_subsite_p = coalesce(update_type__implements_subsite_p, implements_subsite_p), inherit_templates_p = coalesce(update_type__inherit_templates_p, inherit_templates_p) where package_key = update_type__package_key; return update_type__package_key; end;' language 'plpgsql'; -- procedure register_application create or replace function apm__register_application (varchar,varchar,varchar,varchar,boolean,boolean,boolean,boolean,varchar,integer) returns integer as ' declare package_key alias for $1; pretty_name alias for $2; pretty_plural alias for $3; package_uri alias for $4; initial_install_p alias for $5; -- default ''f'' singleton_p alias for $6; -- default ''f'' implements_subsite_p alias for $7; -- default ''f'' inherit_templates_p alias for $8; -- default ''f'' spec_file_path alias for $9; -- default null spec_file_mtime alias for $10; -- default null begin PERFORM apm__register_package( package_key, pretty_name, pretty_plural, package_uri, ''apm_application'', initial_install_p, singleton_p, implements_subsite_p, inherit_templates_p, spec_file_path, spec_file_mtime ); return 0; end;' language 'plpgsql'; -- procedure register_service create or replace function apm__register_service (varchar,varchar,varchar,varchar,boolean,boolean,boolean,boolean,varchar,integer) returns integer as ' declare package_key alias for $1; pretty_name alias for $2; pretty_plural alias for $3; package_uri alias for $4; initial_install_p alias for $5; -- default ''f'' singleton_p alias for $6; -- default ''f'' implements_subsite_p alias for $7; -- default ''f'' inherit_templates_p alias for $8; -- default ''f'' spec_file_path alias for $9; -- default null spec_file_mtime alias for $10; -- default null begin PERFORM apm__register_package( package_key, pretty_name, pretty_plural, package_uri, ''apm_service'', initial_install_p, singleton_p, implements_subsite_p, inherit_templates_p, spec_file_path, spec_file_mtime ); return 0; end;' language 'plpgsql'; create or replace function apm_package__is_child(varchar, varchar) returns boolean as ' declare parent_package_key alias for $1; child_package_key alias for $2; dependency record; begin if parent_package_key = child_package_key then return ''t''; end if; for dependency in select apd.service_uri from apm_package_versions apv, apm_package_dependencies apd where apd.version_id = apv.version_id and apv.enabled_p and apd.dependency_type = ''extends'' and apv.package_key = child_package_key loop if dependency.service_uri = parent_package_key or apm_package__is_child(parent_package_key, dependency.service_uri) then return ''t''; end if; end loop; return ''f''; end;' language 'plpgsql';