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 | 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)), | ... | ... |