From 91d77d630773aeea16b113783c1c09aef0bce9c0 Mon Sep 17 00:00:00 2001 From: totoro Date: Sat, 28 Mar 2026 12:21:15 +0900 Subject: [PATCH] [+] in update_row function, add operation distinction (create or update) to let it call the right trigger to apply before and after --- hayamiki_lib | 2 +- src/web_controller/hayamiki.anubis | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/hayamiki_lib b/hayamiki_lib index 65fb857..0023065 160000 --- a/hayamiki_lib +++ b/hayamiki_lib @@ -1 +1 @@ -Subproject commit 65fb857035bda2176afbae253232d138107269c6 +Subproject commit 0023065e84fd9d0a165d0d7230d3f4bab6748aca diff --git a/src/web_controller/hayamiki.anubis b/src/web_controller/hayamiki.anubis index c3cea65..5f45940 100644 --- a/src/web_controller/hayamiki.anubis +++ b/src/web_controller/hayamiki.anubis @@ -58,6 +58,10 @@ read xlib/web_controllers/language/language_management.anubis //read web_controllers/root/web_action.anubis read hkc_files_management.anubis +type Operation_type: + create, + update +. public define WEB_Controller_Result @@ -589,6 +593,7 @@ public define Maybe(Int) ( SQLite3DataBase db, VTM _vtm, + Operation_type op_type, List(Web_arg) _lwa )= @@ -615,8 +620,9 @@ public define Maybe(Int) define (WEB_Session) -> WEB_Controller_Result update_row ( - SQLite3DataBase db, - VTM _vtm, + SQLite3DataBase db, + VTM _vtm, + Operation_type op_type, (LogLevel, String) -> One logger )= ( @@ -632,7 +638,12 @@ define (WEB_Session) -> WEB_Controller_Result { failure then logger(logError, "can't get writer for "+table_name);redirect_to_previous, success(controller) then - 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)); + if op_type is { + create then + 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)) + update then + 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)) + }; if controller.write_from_fields(db, *_session.web_request.lwa) is { @@ -644,7 +655,13 @@ define (WEB_Session) -> WEB_Controller_Result success(inserted_idx) then replace_Int(_session.fields, "hk_last_insert_idx", inserted_idx); - 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)); + //call trigger depending of the operation type (create, update) + if op_type is { + create then + 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)) + update then + 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)) + }; logger(logInfo, "write OK"); if sub_dialog then @@ -769,10 +786,11 @@ define (WEB_Session) -> WEB_Controller_Result delete_row(db, _vtm, logger)(_session) else if oper = "edit" then logger(logInfo, "grid: EDIT operation requested"); - update_row(db, _vtm, logger)(_session) + update_row(db, _vtm, update, logger)(_session) + //create operation else if oper = "add" then logger(logInfo, "grid: ADD operation requested"); - update_row(db, _vtm, logger)(_session) + update_row(db, _vtm, create, logger)(_session) else set_Page_Message(_session.fields, error_translate("GRID_OPERATION_NOT_FOUND")); 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 if oper = "create" then //logger(logInfo, "crud: CREATE operation requested"); - update_row(db, _vtm, logger)(_session) + update_row(db, _vtm, create, logger)(_session) else if oper = "read" then //logger(logInfo, "crud: READ operation requested"); get_rows_json(db, _vtm)(_session) else if oper = "update" then //logger(logInfo, "crud: UPDATE operation requested"); - update_row(db, _vtm, logger)(_session) + update_row(db, _vtm, update, logger)(_session) else if oper = "delete" then //logger(logInfo, "crud: DELETE operation requested"); delete_row(db, _vtm, logger)(_session) @@ -941,7 +959,8 @@ public define List(WEB_Action) web_action(hkc_list_view_name, https, allow_public, view_editor(db, _vtm, true, false)), web_action(hkc_list_view_filter, https, allow_public, view_editor(db, _vtm, false, true)), web_action(hkc_save_row, https, allow_public, save_row(db, _vtm, hk_logger)), - web_action(hkc_update_row, https, allow_public, update_row(db, _vtm, hk_logger)), + web_action(hkc_create_row, https, allow_public, update_row(db, _vtm, create, hk_logger)), + web_action(hkc_update_row, https, allow_public, update_row(db, _vtm, update, hk_logger)), web_action(hkc_cancel, https, allow_public, (WEB_Session _) |-> redirect_to_previous), web_action(hkc_delete_row, https, allow_public, delete_row(db, _vtm, hk_logger)), web_action(hkc_show_apps, https, allow_public, show_apps(db, hk_db)), -- libgit2 0.21.4