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 58 //read web_controllers/root/web_action.anubis
59 59 read hkc_files_management.anubis
60 60  
  61 +type Operation_type:
  62 + create,
  63 + update
  64 +.
61 65  
62 66  
63 67 public define WEB_Controller_Result
... ... @@ -589,6 +593,7 @@ public define Maybe(Int)
589 593 (
590 594 SQLite3DataBase db,
591 595 VTM _vtm,
  596 + Operation_type op_type,
592 597 List(Web_arg) _lwa
593 598 )=
594 599  
... ... @@ -615,8 +620,9 @@ public define Maybe(Int)
615 620 define (WEB_Session) -> WEB_Controller_Result
616 621 update_row
617 622 (
618   - SQLite3DataBase db,
619   - VTM _vtm,
  623 + SQLite3DataBase db,
  624 + VTM _vtm,
  625 + Operation_type op_type,
620 626 (LogLevel, String) -> One logger
621 627 )=
622 628 (
... ... @@ -632,7 +638,12 @@ define (WEB_Session) -> WEB_Controller_Result
632 638 {
633 639 failure then logger(logError, "can't get writer for "+table_name);redirect_to_previous,
634 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 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 655  
645 656 success(inserted_idx) then
646 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 666 logger(logInfo, "write OK");
650 667 if sub_dialog then
... ... @@ -769,10 +786,11 @@ define (WEB_Session) -> WEB_Controller_Result
769 786 delete_row(db, _vtm, logger)(_session)
770 787 else if oper = "edit" then
771 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 791 else if oper = "add" then
774 792 logger(logInfo, "grid: ADD operation requested");
775   - update_row(db, _vtm, logger)(_session)
  793 + update_row(db, _vtm, create, logger)(_session)
776 794 else
777 795 set_Page_Message(_session.fields, error_translate("GRID_OPERATION_NOT_FOUND"));
778 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 811  
794 812 if oper = "create" then
795 813 //logger(logInfo, "crud: CREATE operation requested");
796   - update_row(db, _vtm, logger)(_session)
  814 + update_row(db, _vtm, create, logger)(_session)
797 815 else if oper = "read" then
798 816 //logger(logInfo, "crud: READ operation requested");
799 817 get_rows_json(db, _vtm)(_session)
800 818 else if oper = "update" then
801 819 //logger(logInfo, "crud: UPDATE operation requested");
802   - update_row(db, _vtm, logger)(_session)
  820 + update_row(db, _vtm, update, logger)(_session)
803 821 else if oper = "delete" then
804 822 //logger(logInfo, "crud: DELETE operation requested");
805 823 delete_row(db, _vtm, logger)(_session)
... ... @@ -941,7 +959,8 @@ public define List(WEB_Action)
941 959 web_action(hkc_list_view_name, https, allow_public, view_editor(db, _vtm, true, false)),
942 960 web_action(hkc_list_view_filter, https, allow_public, view_editor(db, _vtm, false, true)),
943 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 964 web_action(hkc_cancel, https, allow_public, (WEB_Session _) |-> redirect_to_previous),
946 965 web_action(hkc_delete_row, https, allow_public, delete_row(db, _vtm, hk_logger)),
947 966 web_action(hkc_show_apps, https, allow_public, show_apps(db, hk_db)),
... ...