--
-- acs_rel_type__create_type/15
--
create or replace function acs_rel_type__create_type(
  create_type__rel_type character varying,
  create_type__pretty_name character varying,
  create_type__pretty_plural character varying,
  create_type__supertype character varying,
  create_type__table_name character varying,
  create_type__id_column character varying,
  create_type__package_name character varying,
  create_type__type_extension_table character varying,
  create_type__object_type_one character varying,
  create_type__min_n_rels_one integer,
  create_type__max_n_rels_one integer,
  create_type__object_type_two character varying,
  create_type__min_n_rels_two integer,
  create_type__max_n_rels_two integer,
  create_type__composable_p boolean DEFAULT true
) returns int4 as $$

DECLARE

  abstract_p   acs_object_types.abstract_p%TYPE      default 'f';
  name_method  acs_object_types.name_method%TYPE     default null;     
  create_type__role_one  acs_rel_types.role_one%TYPE default null;           
  create_type__role_two  acs_rel_types.role_two%TYPE default null;
BEGIN

    PERFORM acs_object_type__create_type(
      create_type__rel_type,
      create_type__pretty_name,
      create_type__pretty_plural,
      create_type__supertype,
      create_type__table_name,
      create_type__id_column,
      create_type__package_name,
      abstract_p,
      create_type__type_extension_table,
      name_method
    );

    insert into acs_rel_types
     (rel_type,
      object_type_one, role_one,
      min_n_rels_one, max_n_rels_one,
      object_type_two, role_two,
      min_n_rels_two, max_n_rels_two,
      composable_p)
    values
     (create_type__rel_type,
      create_type__object_type_one, create_type__role_one,
      create_type__min_n_rels_one, create_type__max_n_rels_one,
      create_type__object_type_two, create_type__role_two,
      create_type__min_n_rels_two, create_type__max_n_rels_two,
      create_type__composable_p);

    return 0; 
END;
$$ language plpgsql;


--
-- acs_rel_type__create_type/16
--
create or replace function acs_rel_type__create_type(
  create_type__rel_type character varying,
  create_type__pretty_name character varying,
  create_type__pretty_plural character varying,
  create_type__supertype character varying,
  create_type__table_name character varying,
  create_type__id_column character varying,
  create_type__package_name character varying,
  create_type__object_type_one character varying,
  create_type__role_one character varying,
  create_type__min_n_rels_one integer,
  create_type__max_n_rels_one integer,
  create_type__object_type_two character varying,
  create_type__role_two character varying,
  create_type__min_n_rels_two integer,
  create_type__max_n_rels_two integer,
  create_type__composable_p boolean DEFAULT true
) returns int4 as $$

DECLARE

  type_extension_table acs_object_types.type_extension_table%TYPE default null;
  abstract_p   acs_object_types.abstract_p%TYPE      default 'f';
  name_method  acs_object_types.name_method%TYPE     default null;     
BEGIN
    PERFORM acs_object_type__create_type(
      create_type__rel_type,
      create_type__pretty_name,
      create_type__pretty_plural,
      create_type__supertype,
      create_type__table_name,
      create_type__id_column,
      create_type__package_name,
      abstract_p,
      type_extension_table,
      name_method
    );

    insert into acs_rel_types
     (rel_type,
      object_type_one, role_one,
      min_n_rels_one, max_n_rels_one,
      object_type_two, role_two,
      min_n_rels_two, max_n_rels_two,
      composable_p)
    values
     (create_type__rel_type,
      create_type__object_type_one, create_type__role_one,
      create_type__min_n_rels_one, create_type__max_n_rels_one,
      create_type__object_type_two, create_type__role_two,
      create_type__min_n_rels_two, create_type__max_n_rels_two,
      create_type__composable_p);

    return 0; 
END;
$$ language plpgsql;