hk_controller.anubis 3.3 KB
/*
 * Created by PyramIDE.
 * User: フランスのトトロ aka (David RENÉ) 
 * Date: 19/03/2016
 * Time: 19:48
 * © Calexium 
 */

read tools/basis.anubis
transmit hayamiki_lib/types/hayamiki.anubis
//transmit hayamiki_lib/controller/hk_delete.anubis
transmit hayamiki_lib/controller/hk_trigger.anubis

 transmit kayamiki_lib/controller/hk_rows_import.anubis

transmit calexium_lib/web/CXM_common.anubis
transmit calexium_lib/web/CXM_making_a_web_site.anubis
transmit calexium_lib/database/db_types.anubis

  //CRUD basis function + 
  //Create
  //Read
  //Update
  //Delete
  
public type HK_Table_controller:
  hk_table_controller(
    String        table_name,
    List(String)  columns_name,
      
    //Create
      (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(Int) write_from_type,
      (SQLite3DataBase db, List(Web_arg) lwa) -> Maybe(Int) write_from_fields,
    //Read
      (SQLite3DataBase db, String clause) -> Int            get_count,
      //(SQLite3DataBase db, String clause) -> List($T)       get_all_by_clause_to_list_type,      
      (SQLite3DataBase db, List(String) columns, Bool resolve_fk, DB_id) -> JsonValue                                                get_one_json,
      (SQLite3DataBase db, List(String) columns, Bool resolve_fk, HK_Referer referer, String clause, String order_by) -> JsonValue   get_rows_json,
    //Update
    //Delete
      (SQLite3DataBase db, List(Int) l_int) -> Maybe(One) delete,
      
      //view interface
      //selector
      (SQLite3DataBase db, HK_Referer referer, String filter)  -> List((List(CoreAttrs), WebArgValue, String))      get_selector,

      //Triggers of that table, can be dynamically updated
      HK_Trigger_Set triggers
  )
.

public define Maybe(HK_Table_controller)
  get_hk_controller
  (
    List(HK_Table_controller)   controllers,
    String                      _table_name
  )=
  if controllers is
  {
    []        then  failure,
    [h . t ]  then
      if h.table_name = _table_name then
        success(h)
      else
        get_hk_controller(t, _table_name)
  }
.


public define One
  add_trigger_to_table
  (
    List(HK_Table_controller) controllers,
    String                    _table_name,
    HK_Trigger                trigger_to_add
  )=
  if get_hk_controller(controllers, _table_name) is
  {
    failure       then unique
    success(ctrl) then
      since trigger_to_add is hk_trigger(name, t_type, call_back),
      if t_type is
      {
        before_create then println(">>> ADD TRIGGER 'before_create' to table "+_table_name);add_trigger(ctrl.triggers.before_create, trigger_to_add),
        after_create  then println(">>> ADD TRIGGER 'after_create' to table "+_table_name); add_trigger(ctrl.triggers.after_create,  trigger_to_add),
      
        before_update then println(">>> ADD TRIGGER 'before_update' to table "+_table_name);add_trigger(ctrl.triggers.before_update, trigger_to_add),
        after_update  then println(">>> ADD TRIGGER 'after_update' to table "+_table_name); add_trigger(ctrl.triggers.after_update,  trigger_to_add),

        before_delete then println(">>> ADD TRIGGER 'before_delete' to table "+_table_name);add_trigger(ctrl.triggers.before_delete, trigger_to_add),
        after_delete  then println(">>> ADD TRIGGER 'after_delete' to table "+_table_name); add_trigger(ctrl.triggers.after_delete,  trigger_to_add)

      }
  }
.