
FUNCTIONS
=========

Function Groups:
1. Tree functions
2. Node Create functions
3. Node Update Delete functions
4. Node Retrival functions
5. Node Metadata functions           
6. Node Traversal functions 
7. Node sn Sequence functions
8. User access functions
9. I/O functions


 Schema |            Name             |        Result data type        |                          Argument data types                                                    
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 1. Tree functions 
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | get_tree                    | tree.tree                      | tree_name varchar
 tree   | get_trees                   | setof tree.tree                | 
 tree   | create_tree                 | integer                        | arg_tree_name varchar, arg_tree_comment varchar
 tree   | drop_tree                   | boolean                        | arg_tree_name varchar
 tree   | rename_tree                 | boolean                        | arg_tree_current_name varchar, arg_tree_new_name varchar
 tree   | update_tree_description     | boolean                        | arg_tree_name varchar, arg_desc varchar
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
2. Node Create functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | add_child_node              | tree.tree_node                 | arg_parent_node bigint, arg_node_data bigint
 tree   | add_child_node              | tree.tree_node                 | arg_parent_node bigint, arg_node_data bigint, arg_node_weight double 
 tree   | add_named_orphan_node       | tree.tree_node                 | arg_tree_name character varying, arg_node_name character varying, arg_node_data bigint
 tree   | add_named_orphan_node       | tree.tree_node                 | arg_tree_name varchar, arg_node_name varchar, arg_node_data bigint, arg_node_weight double
 tree   | add_orphan_node             | tree.tree_node                 | arg_tree_name varchar, arg_node_data bigint
 tree   | add_orphan_node             | tree.tree_node                 | arg_tree_name varchar, arg_node_data bigint, arg_node_weight double
 tree   | add_orphan_sn_node          | tree.tree_node                 | arg_tree_name varchar, arg_node_sn bigint, arg_node_data bigint
 tree   | add_orphan_sn_node          | tree.tree_node                 | arg_tree_name varchar, arg_node_sn bigint, arg_node_data bigint, arg_node_weight double
 tree   | add_root_node               | tree.tree_node                 | arg_tree_name varchar
 tree   | add_root_node               | tree.tree_node                 | arg_tree_name varchar, arg_node_data bigint
 tree   | add_root_node               | tree.tree_node                 | arg_tree_name varchar, arg_node_data bigint, arg_weight double
 tree   | make_orphan_node            | boolean                        | arg_node bigint
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
3. Node Update Delete functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | set_parentship              | boolean                        | arg_parent_node bigint, arg_child_node bigint
 tree   | set_parentship              | boolean                        | arg_tree_name varchar, arg_parent_node_name varchar, arg_child_node_name varchar
 tree   | set_parentship              | boolean                        | arg_tree_name varchar, arg_parent_node_sn bigint, arg_child_node_sn bigint
 tree   | set_root_node               | boolean                        | arg_node bigint
 tree   | set_root_node               | boolean                        | arg_tree_name varchar, arg_node_name varchar
 tree   | set_root_node               | boolean                        | arg_tree_name varchar, arg_node_sn bigint
 tree   | unset_root_node             | boolean                        | arg_node bigint
 tree   | delete_node                 | boolean                        | arg_node_id bigint
 tree   | delete_subtree              | boolean                        | arg_node_id bigint
 tree   | swap_childs_order           | boolean                        | arg_node_id_1 bigint, arg_node_id_2 bigint
 tree   | update_node_data            | boolean                        | arg_node bigint, arg_node_data_id bigint 
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
4. Node Retrival functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | get_all_nodes               | setof tree.tree_node           | tree_name varchar
 tree   | get_anchestor               | setof tree.tree_node           | node_id bigint, node_id bigint
 tree   | get_childs                  | setof tree.tree_node           | node_id bigint
 tree   | get_internal_nodes          | setof tree.tree_node           | tree_name varchar
 tree   | get_leaf_nodes              | setof tree.tree_node           | tree_name varchar
 tree   | get_named_nodes             | setof tree.tree_node           | tree_name varchar
 tree   | get_node                    | tree.tree_node                 | node_id bigint
 tree   | get_node                    | tree.tree_node                 | tree_name varchar, node_name varchar
 tree   | get_node                    | tree.tree_node                 | tree_name varchar, node_sn bigint
 tree   | get_node_id                 | bigint                         | tree_name varchar, node_name varchar
 tree   | get_node_id                 | bigint                         | tree_name varchar, node_sn bigint
 tree   | get_nodes                   | setof tree.tree_node           | tree_name varchar
 tree   | get_nodes_for_data          | setof tree.tree_node           | tree_name varchar, node_data_id bigint
 tree   | get_orphan_nodes            | setof tree.tree_node           | tree_name varchar
 tree   | get_parent                  | tree.tree_node                 | node_id bigint
 tree   | get_path                    | setof tree.traversal_node      | node_id bigint, include_node boolean
 tree   | get_path                    | setof tree.traversal_node      | node_id bigint, include_node boolean, include_root boolean
 tree   | get_root                    | tree.tree_node                 | tree_name varchar
 tree   | get_root_id                 | bigint                         | tree_name varchar
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
5. Node Metadata functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | get_node_metadata           | tree.tree_node_metadata        | node_id bigint
 tree   | remove_node_metadata        | boolean                        | arg_node_id bigint
 tree   | remove_node_name            | boolean                        | arg_node_id bigint
 tree   | set_node_description        | boolean                        | arg_node_id bigint, arg_node_description varchar
 tree   | set_node_metadata           | boolean                        | arg_node_id bigint, arg_node_description varchar
 tree   | set_node_name               | boolean                        | arg_node_id bigint, arg_node_name varchar
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
6. Node Traversal functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | traverse_group              | setof tree.traversal_group     | node_id bigint, arg_max_level integer, get_root_group boolean
 tree   | traverse_group              | setof tree.traversal_group     | node_id bigint, get_root_group boolean
 tree   | traverse_group              | setof tree.traversal_group     | tree_name varchar, arg_max_level integer, get_root_group boolean
 tree   | traverse_group              | setof tree.traversal_group     | tree_name varchar, get_root_group boolean
 tree   | traverse_node               | setof tree.traversal_node      | anode_id bigint
 tree   | traverse_node               | setof tree.traversal_node      | node_id bigint, max_level integer
 tree   | traverse_tree               | setof tree.traversal_node      | tree_name varchar
 tree   | traverse_tree               | setof tree.traversal_node      | tree_name varchar, max_level integer
 tree   | traverse_tree_level         | setof tree.traversal_node      | arg_tree_name varchar
 tree   | traverse_tree_level         | setof tree.traversal_node      | arg_tree_name varchar, arg_max_level integer
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
7. Node sn Sequence functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | get_node_next_sn            | bigint                         | tree_name varchar
 tree   | get_node_sn_sequence        | tree.tree_node_sn_sequence     | arg_tree_name varchar
 tree   | set_node_next_sn            | bigint                         | tree_name varchar, anode_sn bigint
 tree   | set_node_next_sn            | bigint                         | tree_name varchar, node_sn bigint, is_called_status boolean
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
8. User access functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | add_node_to_role            | boolean                        | arg_node bigint, arg_role varchar
 tree   | add_node_to_role            | boolean                        | arg_tree varchar, arg_node varchar, arg_role varchar
 tree   | add_node_to_role            | boolean                        | arg_tree varchar, arg_node_sn bigint, arg_role varchar
 tree   | add_user_to_role            | boolean                        | arg_tree varchar, arg_user varchar, arg_role varchar
 tree   | drop_role_associations      | boolean                        | arg_role varchar
 tree   | drop_role_node_associations | boolean                        | arg_role varchar
 tree   | drop_role_user_associations | boolean                        | arg_role varchar
 tree   | get_users_with_roles        | setof tree.user_with_role      | arg_tree varchar
 tree   | is_user_in_role             | boolean                        | arg_tree varchar, arg_user varchar, arg_role varchar
 tree   | get_nodes_with_roles        | setof tree.tree_node_with_role | arg_tree varchar
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
9. I/O functions
--------+-----------------------------+--------------------------------+-------------------------------------------------------------------------------------------------------------
 tree   | tree_export                 | setof tree.tree_node_exp       | arg_tree_name varchar
 tree   | tree_import_from_table      | integer                        | arg_table_name varchar





DATA STRACTURES
===============


------------------+------------------+-----------------------------------------
tree.tree_node
------------------+------------------+-----------------------------------------
 id               | bigint           | node id (application assigned)
 node_sn          | bigint           | node sn (unique per tree)
 node_name        | varchar          | node name (unique per tree)
 node_data_id     | bigint           | foreign id to user data
 weight           | double           | used for child ordering defult value 0.0
 internal_weight  | bigint           | used for child ordering
 level            | integer          | level of nde in tree
 parent_id        | bigint           | parent node id
 parent_sn        | bigint           | parent node id
------------------+------------------+-----------------------------------------



------------------+------------------+-----------------------------------------
  traversal_node
------------------+------------------+-----------------------------------------
 id               | bigint           | same as tree.tree_node
 node_name        | varchar          | same as tree.tree_node
 node_sn          | bigint           | same as tree.tree_node
 node_data_id     | bigint           | same as tree.tree_node
 weight           | double           | same as tree.tree_node
 internal_weight  | bigint           | same as tree.tree_node
 level            | integer          | same as tree.tree_node
 parent_id        | bigint           | same as tree.tree_node
 parent_sn        | bigint           | same as tree.tree_node
 traversal_index  | integer          | traversal order
------------------+------------------+-----------------------------------------


------------------+------------------+-----------------------------------------
tree.tree_node_metadata   
------------------+------------------+-----------------------------------------
 id               | bigint           | node id
 node_description | varchar          | node description
------------------+------------------+-----------------------------------------


------------------+------------------+-----------------------------------------
tree.tree
------------------+------------------+-----------------------------------------
 tree_name        | varchar          | name of tree (unique)
 description      | varchar          | 
------------------+------------------+-----------------------------------------

----------------------+--------------+-----------------------------------------
tree.traversal_group
----------------------+--------------+-----------------------------------------
 group_tag            | integer      |
 node_sn              | bigint       |
 node_name            | varchar      |
 node_id              | bigint       |
 node_data_id         | bigint       |
 weight               | double       |
 internal_weight      | bigint       |
 level                | integer      |
 parent_id            | bigint       |
 parent_sn            | bigint       |
 node_traversal_index | integer      |
 traversal_index      | integer      |
----------------------+--------------+----------------------------------------- 

