--
-- apm_package_type__drop_type/2
--
create or replace function apm_package_type__drop_type(
  character varying,
  boolean
) returns int4 as $$

declare
  drop_type__package_key            alias for $1;  
  drop_type__cascade_p              alias for $2;  -- default 'f'
  cur_val                           record; 
begin
    if drop_type__cascade_p = 't' then
        for cur_val in select package_id
       from apm_packages
       where package_key = drop_type__package_key
        loop
            PERFORM apm_package__delete(
	        cur_val.package_id
	    );
        end loop;
	-- Unregister all parameters.
        for cur_val in select parameter_id from apm_parameters
       where package_key = drop_type__package_key
	loop
	    PERFORM apm__unregister_parameter(cur_val.parameter_id);
	end loop;
  
        -- Unregister all versions
	for cur_val in select version_id from apm_package_versions
       where package_key = drop_type__package_key
	loop
	    PERFORM apm_package_version__delete(cur_val.version_id);
        end loop;
    end if;
    delete from apm_package_types
    where package_key = drop_type__package_key;

    return 0; 
end;$$ language plpgsql;