--
-- apm_package_version__copy/5
--
create or replace function apm_package_version__copy(
integer,
integer,
character varying,
character varying,
boolean
) returns int4 as $$
declare
copy__version_id alias for $1;
copy__new_version_id alias for $2; -- default null
copy__new_version_name alias for $3;
copy__new_version_uri alias for $4;
copy__copy_owners_p alias for $5;
v_version_id integer;
begin
v_version_id := acs_object__new(
copy__new_version_id,
'apm_package_version',
now(),
null,
null,
null
);
insert into apm_package_versions(version_id, package_key, version_name,
version_uri, summary, description_format, description,
release_date, vendor, vendor_uri, auto_mount)
select v_version_id, package_key, copy__new_version_name,
copy__new_version_uri, summary, description_format, description,
release_date, vendor, vendor_uri, auto_mount
from apm_package_versions
where version_id = copy__version_id;
update acs_objects
set title = (select v.package_key || ', Version ' || v.version_name
from apm_package_versions v
where v.version_id = copy__version_id)
where object_id = copy__version_id;
insert into apm_package_dependencies(dependency_id, version_id, dependency_type, service_uri, service_version)
select nextval('t_acs_object_id_seq'), v_version_id, dependency_type, service_uri, service_version
from apm_package_dependencies
where version_id = copy__version_id;
insert into apm_package_callbacks (version_id, type, proc)
select v_version_id, type, proc
from apm_package_callbacks
where version_id = copy__version_id;
if copy__copy_owners_p then
insert into apm_package_owners(version_id, owner_uri, owner_name, sort_key)
select v_version_id, owner_uri, owner_name, sort_key
from apm_package_owners
where version_id = copy__version_id;
end if;
return v_version_id;
end;$$ language plpgsql;