
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 




 Schema |          Name           |       Result data type        |                                     Argument data types 
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
1. Tree functions 
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
 tree   | create_tree             | integer                       | tree_name varchar , tree_comment character varying
 tree   | delete_tree             | boolean                       | tree_name varchar
 tree   | get_tree                | tree.tree                     | tree_id integer
 tree   | get_tree                | tree.tree                     | tree_name varchar
 tree   | get_trees               | setof tree.tree               | 
 tree   | rename_tree             | bollean                       | tree_current_name varchar, tree_new_name varchar
 tree   | update_tree_description | boolean                       | tree_name varchar, desc varchar
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
2. Node Create functions
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
 tree   | add_node                | tree.tree_node                | parent_node bigint, node_data bigint
 tree   | add_node                | tree.tree_node                | parent_node bigint, node_data bigint, node_weight double precision
 tree   | add_orphan_node         | tree.tree_node                | tree_name character varying, node_data bigint
 tree   | add_orphan_node         | tree.tree_node                | tree_name varchar, node_data bigint, node_weight double precision
 tree   | add_named_orphan_node   | tree.tree_node                | tree_name varchar, node_name varchar, node_data bigint
 tree   | add_named_orphan_node   | tree.tree_node                | tree_name varchar, node_name varchar, node_data bigint, node_weight double precision
 tree   | add_root_node           | tree.tree_node                | tree_name varchar, node_data bigint
 tree   | add_root_node           | tree.tree_node                | tree_name varchar, node_data bigint, weight double precision
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
3. Node Update Delete functions
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
 tree   | delete_node             | boolean                       | node_id bigint
 tree   | delete_subtree          | boolean                       | node_id bigint
 tree   | set_parentship          | boolean                       | parent_node bigint, child_node bigint
 tree   | set_parentship          | boolean                       | tree_name varchar, parent_node_name varchar, child_node_name varchar
 tree   | set_root_node           | boolean                       | node bigint
 tree   | set_root_node           | boolean                       | tree_name varchar, node_name varchar
 tree   | swap_childs_order       | boolean                       | node_id_1 bigint, node_id_2 bigint
 tree   | unset_root_node         | boolean                       | node bigint
 tree   | update_node_data        | boolean                       | node bigint, node_data_id bigint
 tree   | make_orphan_node        | boolean                       | node bigint
 tree   | set_node_name           | boolean                       | node_id bigint, node_name varchar
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
4. Node Retrival functions
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
 tree   | get_all_nodes           | setof tree.tree_node          | tree_name varchar
 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_metadata | tree_name varchar
 tree   | get_node                | tree.tree_node                | node_id 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     | arg_node_id bigint, arg_include_node boolean, arg_include_root boolean
 tree   | get_root                | tree.tree_node                | tree_name varchar, tree_name varchar
 tree   | get_root_id             | bigint                        | tree_name varchar, tree_name varchar
 tree   | get_anchestor           | setof tree.tree_node          | arg_node_id bigint, arg_node_id bigint
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
5. Node Metadata functions
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
 tree   | get_node_metadata       | tree.tree_node_metadata       | node_id bigint
 tree   | get_node                | tree.tree_node                | tree_name varchar, node_name varchar
 tree   | get_node_id             | bigint                        | tree_name varchar, node_name varchar
 tree   | remove_node_metadata    | boolean                       | node_id bigint
 tree   | remove_node_name        | boolean                       | node_id bigint
 tree   | set_node_description    | boolean                       | node_id bigint, node_description varchar
 tree   | set_node_metadata       | boolean                       | node_id bigint, node_description varchar
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
6. Node Traversal functions
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------
 tree   | traverse_group          | setof tree.traversal_group    | arg_tree_name varchar, arg_max_level integer, get_root_group boolean
 tree   | traverse_group          | setof tree.traversal_group    | arg_tree_name varchar, get_root_group boolean
 tree   | traverse_group          | setof tree.traversal_group    | node_id bigint, max_level integer, get_root_group boolean
 tree   | traverse_group          | setof tree.traversal_group    | node_id bigint, get_root_group boolean
 tree   | traverse_node           | setof tree.traversal_node     | node_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     | tree_name varchar
 tree   | traverse_tree_level     | setof tree.traversal_node     | tree_name varchar, max_level integer
--------+-------------------------+-------------------------------+-------------------------------------------------------------------------------------





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


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



------------------+------------------+-----------------------------------------
  traversal_node
------------------+------------------+-----------------------------------------
 id               | bigint           | same as tree.tree_node
 node_name        | varchar          | same as tree.tree_node
 node_data_id     | bigint           | same as tree.tree_node
 weight           | double precision | 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
 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          | 
------------------+------------------+-----------------------------------------

