From ab8da554697659324f79711daed7a935fc284268 Mon Sep 17 00:00:00 2001 From: totoro Date: Sat, 14 May 2022 14:21:58 +0200 Subject: [PATCH] [+] manage the trigger before and after for delete_row --- hayamiki_lib | 2 +- make_lib.bat | 1 + src/web_controller/hayamiki.anubis | 43 ++++++++++++++++++++++++++++++++++--------- src/web_controller/hayamiki_plugin.anubis | 2 +- xlib | 2 +- 5 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 make_lib.bat diff --git a/hayamiki_lib b/hayamiki_lib index 2c3918d..79e0a36 160000 --- a/hayamiki_lib +++ b/hayamiki_lib @@ -1 +1 @@ -Subproject commit 2c3918d50e39f154076525d5bdf90ccb45264cae +Subproject commit 79e0a36fdf9a2bb34e0245b53e6a5077b428affa diff --git a/make_lib.bat b/make_lib.bat new file mode 100644 index 0000000..464b042 --- /dev/null +++ b/make_lib.bat @@ -0,0 +1 @@ +anubis.1.19.exe -I"./;./src;./src/version" -tab:2 -pre -O src\web_controller\hayamiki_plugin.anubis diff --git a/src/web_controller/hayamiki.anubis b/src/web_controller/hayamiki.anubis index 904e62a..9a768e1 100644 --- a/src/web_controller/hayamiki.anubis +++ b/src/web_controller/hayamiki.anubis @@ -440,16 +440,41 @@ define (WEB_Session) -> WEB_Controller_Result ( WEB_Session _session ) |-> - if hk_delete_row(*_session.web_request.lwa, db) is + with _T = make_translate_function(_session), + _lwa = *_session.web_request.lwa, + + with table_name = get_String(_lwa, "table_name", ""), // table name + + if get_hk_controller(_vtm.hk_controllers, table_name) is { - error(error_str) then - set_Page_Message(_session.fields, error_translate(error_str)); - redirect_to_previous(_session.fields), - ok(ok_str) then - logger(logInfo, "delete ok"); - set_Page_Message(_session.fields, ok_translate(ok_str)); - redirect_to_previous(_session.fields), - }. + failure then logger(logError, "can't get hk_controller for "+table_name);redirect_to_previous(_session.fields), + success(controller) then + forget(map((HK_Trigger trigger) + |-> + logger(logInfo, "call trigger before delete "+trigger.trigger_name+" ON table "+table_name); + trigger.trigger_call_back(db, _session), + *controller.triggers.before_delete)); + + if hk_delete_row(*_session.web_request.lwa, db) is + { + error(error_str) then + set_Page_Message(_session.fields, error_translate(error_str)); + redirect_to_previous(_session.fields), + + ok(ok_str) then + forget(map((HK_Trigger trigger) + |-> + logger(logInfo, "call trigger after delete "+trigger.trigger_name+" ON table "+table_name); + trigger.trigger_call_back(db, _session), + *controller.triggers.after_delete)); + + logger(logInfo, "delete ok"); + + set_Page_Message(_session.fields, ok_translate(ok_str)); + redirect_to_previous(_session.fields), + } + } +. define (WEB_Session) -> WEB_Controller_Result save_row diff --git a/src/web_controller/hayamiki_plugin.anubis b/src/web_controller/hayamiki_plugin.anubis index 89d38f8..edc7e6b 100644 --- a/src/web_controller/hayamiki_plugin.anubis +++ b/src/web_controller/hayamiki_plugin.anubis @@ -37,7 +37,7 @@ global define WEB_Plugin web_plugin( "HAYAMIKI", "BASE", - "1.19.0", + "1.19.1", _Int_to_ISO_8601_datetime(to_Int(__TIME__)), plugin_get_controller, plugin_get_typed_content diff --git a/xlib b/xlib index a66ad21..0555931 160000 --- a/xlib +++ b/xlib @@ -1 +1 @@ -Subproject commit a66ad216efcbfe28e4f095ffc68d29e2b8f08412 +Subproject commit 0555931cf45f083fa29cd976aadf081a4f3c1d78 -- libgit2 0.21.4