--
-- category_synonym__new/4
--
create or replace function category_synonym__new(
  character varying,
  character varying,
  integer,
  integer
) returns int4 as $$

declare
	p_name		alias for $1;
	p_locale	alias for $2;
	p_category_id	alias for $3;
	p_synonym_id	alias for $4;
	v_synonym_id	integer;
begin
	-- get new synonym_id
	if (p_synonym_id is null) then
		v_synonym_id := nextval ('category_synonyms_id_seq');
	else 
		v_synonym_id := p_synonym_id;
	end if;

	-- insert synonym data
	insert into category_synonyms (synonym_id, category_id, locale, name, synonym_p)
	values (v_synonym_id, p_category_id, p_locale, p_name, 't');

	-- insert in synonym index and search results
	PERFORM category_synonym__reindex (v_synonym_id, p_name, p_locale);

	return (v_synonym_id);
end;$$ language plpgsql;