--
-- acs_message_insert_tr/0
--
create or replace function acs_message_insert_tr(
  
) returns trigger as $$

declare
        v_parent_sk     varbit  default null;
        v_max_value     integer;
begin
	if new.reply_to is null then
	    select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value
              from acs_messages
             where reply_to is null;
        else
	    select max(tree_leaf_key_to_int(tree_sortkey)) into v_max_value
              from acs_messages
             where reply_to = new.reply_to;

            select tree_sortkey into v_parent_sk 
              from acs_messages
             where message_id = new.reply_to;
        end if;

        new.tree_sortkey := tree_next_key(v_parent_sk, v_max_value);

        return new;

end;$$ language plpgsql;