Commit 91d77d630773aeea16b113783c1c09aef0bce9c0

Authored by David RENÉ
1 parent 4a8df9d1

[+] in update_row function, add operation distinction (create or update) to let…

… it call the right trigger to apply before and after
Showing 2 changed files with 29 additions and 10 deletions   Show diff stats
hayamiki_lib @ 0023065e84f
1 -Subproject commit 65fb857035bda2176afbae253232d138107269c6 1 +Subproject commit 0023065e84fd9d0a165d0d7230d3f4bab6748aca
src/web_controller/hayamiki.anubis
@@ -58,6 +58,10 @@ read xlib/web_controllers/language/language_management.anubis @@ -58,6 +58,10 @@ read xlib/web_controllers/language/language_management.anubis
58 //read web_controllers/root/web_action.anubis 58 //read web_controllers/root/web_action.anubis
59 read hkc_files_management.anubis 59 read hkc_files_management.anubis
60 60
  61 +type Operation_type:
  62 + create,
  63 + update
  64 +.
61 65
62 66
63 public define WEB_Controller_Result 67 public define WEB_Controller_Result
@@ -589,6 +593,7 @@ public define Maybe(Int) @@ -589,6 +593,7 @@ public define Maybe(Int)
589 ( 593 (
590 SQLite3DataBase db, 594 SQLite3DataBase db,
591 VTM _vtm, 595 VTM _vtm,
  596 + Operation_type op_type,
592 List(Web_arg) _lwa 597 List(Web_arg) _lwa
593 )= 598 )=
594 599
@@ -615,8 +620,9 @@ public define Maybe(Int) @@ -615,8 +620,9 @@ public define Maybe(Int)
615 define (WEB_Session) -> WEB_Controller_Result 620 define (WEB_Session) -> WEB_Controller_Result
616 update_row 621 update_row
617 ( 622 (
618 - SQLite3DataBase db,  
619 - VTM _vtm, 623 + SQLite3DataBase db,
  624 + VTM _vtm,
  625 + Operation_type op_type,
620 (LogLevel, String) -> One logger 626 (LogLevel, String) -> One logger
621 )= 627 )=
622 ( 628 (
@@ -632,7 +638,12 @@ define (WEB_Session) -> WEB_Controller_Result @@ -632,7 +638,12 @@ define (WEB_Session) -> WEB_Controller_Result
632 { 638 {
633 failure then logger(logError, "can't get writer for "+table_name);redirect_to_previous, 639 failure then logger(logError, "can't get writer for "+table_name);redirect_to_previous,
634 success(controller) then 640 success(controller) then
635 - forget(map((HK_Trigger trigger) |-> logger(logInfo, "call trigger before update "+trigger.trigger_name+" ON table "+table_name); trigger.trigger_call_back(db, _session), *controller.triggers.before_update)); 641 + if op_type is {
  642 + create then
  643 + forget(map((HK_Trigger trigger) |-> logger(logInfo, "call trigger before create "+trigger.trigger_name+" ON table "+table_name); trigger.trigger_call_back(db, _session), *controller.triggers.before_create))
  644 + update then
  645 + forget(map((HK_Trigger trigger) |-> logger(logInfo, "call trigger before update "+trigger.trigger_name+" ON table "+table_name); trigger.trigger_call_back(db, _session), *controller.triggers.before_update))
  646 + };
636 647
637 if controller.write_from_fields(db, *_session.web_request.lwa) is 648 if controller.write_from_fields(db, *_session.web_request.lwa) is
638 { 649 {
@@ -644,7 +655,13 @@ define (WEB_Session) -> WEB_Controller_Result @@ -644,7 +655,13 @@ define (WEB_Session) -> WEB_Controller_Result
644 655
645 success(inserted_idx) then 656 success(inserted_idx) then
646 replace_Int(_session.fields, "hk_last_insert_idx", inserted_idx); 657 replace_Int(_session.fields, "hk_last_insert_idx", inserted_idx);
647 - forget(map((HK_Trigger trigger) |-> logger(logInfo, "call trigger after update "+trigger.trigger_name+" ON table "+table_name); trigger.trigger_call_back(db, _session), *controller.triggers.after_update)); 658 + //call trigger depending of the operation type (create, update)
  659 + if op_type is {
  660 + create then
  661 + forget(map((HK_Trigger trigger) |-> logger(logInfo, "call trigger after create "+trigger.trigger_name+" ON table "+table_name); trigger.trigger_call_back(db, _session), *controller.triggers.after_create))
  662 + update then
  663 + forget(map((HK_Trigger trigger) |-> logger(logInfo, "call trigger after update "+trigger.trigger_name+" ON table "+table_name); trigger.trigger_call_back(db, _session), *controller.triggers.after_update))
  664 + };
648 665
649 logger(logInfo, "write OK"); 666 logger(logInfo, "write OK");
650 if sub_dialog then 667 if sub_dialog then
@@ -769,10 +786,11 @@ define (WEB_Session) -> WEB_Controller_Result @@ -769,10 +786,11 @@ define (WEB_Session) -> WEB_Controller_Result
769 delete_row(db, _vtm, logger)(_session) 786 delete_row(db, _vtm, logger)(_session)
770 else if oper = "edit" then 787 else if oper = "edit" then
771 logger(logInfo, "grid: EDIT operation requested"); 788 logger(logInfo, "grid: EDIT operation requested");
772 - update_row(db, _vtm, logger)(_session) 789 + update_row(db, _vtm, update, logger)(_session)
  790 + //create operation
773 else if oper = "add" then 791 else if oper = "add" then
774 logger(logInfo, "grid: ADD operation requested"); 792 logger(logInfo, "grid: ADD operation requested");
775 - update_row(db, _vtm, logger)(_session) 793 + update_row(db, _vtm, create, logger)(_session)
776 else 794 else
777 set_Page_Message(_session.fields, error_translate("GRID_OPERATION_NOT_FOUND")); 795 set_Page_Message(_session.fields, error_translate("GRID_OPERATION_NOT_FOUND"));
778 redirect_to_previous(_session.fields) //compute_page_error(tb, http_ok, error("TABLE_DOESNT_EXIST")), 796 redirect_to_previous(_session.fields) //compute_page_error(tb, http_ok, error("TABLE_DOESNT_EXIST")),
@@ -793,13 +811,13 @@ define (WEB_Session) -> WEB_Controller_Result @@ -793,13 +811,13 @@ define (WEB_Session) -> WEB_Controller_Result
793 811
794 if oper = "create" then 812 if oper = "create" then
795 //logger(logInfo, "crud: CREATE operation requested"); 813 //logger(logInfo, "crud: CREATE operation requested");
796 - update_row(db, _vtm, logger)(_session) 814 + update_row(db, _vtm, create, logger)(_session)
797 else if oper = "read" then 815 else if oper = "read" then
798 //logger(logInfo, "crud: READ operation requested"); 816 //logger(logInfo, "crud: READ operation requested");
799 get_rows_json(db, _vtm)(_session) 817 get_rows_json(db, _vtm)(_session)
800 else if oper = "update" then 818 else if oper = "update" then
801 //logger(logInfo, "crud: UPDATE operation requested"); 819 //logger(logInfo, "crud: UPDATE operation requested");
802 - update_row(db, _vtm, logger)(_session) 820 + update_row(db, _vtm, update, logger)(_session)
803 else if oper = "delete" then 821 else if oper = "delete" then
804 //logger(logInfo, "crud: DELETE operation requested"); 822 //logger(logInfo, "crud: DELETE operation requested");
805 delete_row(db, _vtm, logger)(_session) 823 delete_row(db, _vtm, logger)(_session)
@@ -941,7 +959,8 @@ public define List(WEB_Action) @@ -941,7 +959,8 @@ public define List(WEB_Action)
941 web_action(hkc_list_view_name, https, allow_public, view_editor(db, _vtm, true, false)), 959 web_action(hkc_list_view_name, https, allow_public, view_editor(db, _vtm, true, false)),
942 web_action(hkc_list_view_filter, https, allow_public, view_editor(db, _vtm, false, true)), 960 web_action(hkc_list_view_filter, https, allow_public, view_editor(db, _vtm, false, true)),
943 web_action(hkc_save_row, https, allow_public, save_row(db, _vtm, hk_logger)), 961 web_action(hkc_save_row, https, allow_public, save_row(db, _vtm, hk_logger)),
944 - web_action(hkc_update_row, https, allow_public, update_row(db, _vtm, hk_logger)), 962 + web_action(hkc_create_row, https, allow_public, update_row(db, _vtm, create, hk_logger)),
  963 + web_action(hkc_update_row, https, allow_public, update_row(db, _vtm, update, hk_logger)),
945 web_action(hkc_cancel, https, allow_public, (WEB_Session _) |-> redirect_to_previous), 964 web_action(hkc_cancel, https, allow_public, (WEB_Session _) |-> redirect_to_previous),
946 web_action(hkc_delete_row, https, allow_public, delete_row(db, _vtm, hk_logger)), 965 web_action(hkc_delete_row, https, allow_public, delete_row(db, _vtm, hk_logger)),
947 web_action(hkc_show_apps, https, allow_public, show_apps(db, hk_db)), 966 web_action(hkc_show_apps, https, allow_public, show_apps(db, hk_db)),