Commit 91d77d630773aeea16b113783c1c09aef0bce9c0
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
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)), |