Feat(SQL, UI): 1. Perfected architecture for modular Search functionality across heirarchical Get Many and Calc Stored Procedures that allows text search filtering on different fields as well as by record Id with control over how the filters are applied. \n 2. Updated User Calc and Get Many Stored Procedures with new Search functionality. \n 3. Improved styles on Dog Command Link page.

This commit is contained in:
2025-07-05 23:17:07 +01:00
parent 0d1e644e6c
commit 8cb8508dcd
51 changed files with 4161 additions and 1292 deletions

View File

@@ -14,6 +14,12 @@ CREATE PROCEDURE parts.p_dog_get_many_command (
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_output_command_categories BIT
, IN a_output_commands BIT
, IN a_debug BIT
@@ -23,10 +29,7 @@ BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_has_filter_command_id BIT;
DECLARE v_has_filter_command_name BIT;
DECLARE v_has_filter_command_category_id BIT;
DECLARE v_has_filter_command_category_name BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
@@ -47,7 +50,7 @@ BEGIN
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100) NOT NULL
, msg VARCHAR(4000) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
@@ -87,6 +90,7 @@ BEGIN
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM parts.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
@@ -98,6 +102,12 @@ BEGIN
SET a_get_inactive_command := IFNULL(a_get_inactive_command, 0);
SET a_ids_command := TRIM(IFNULL(a_ids_command, ''));
SET a_names_command := TRIM(IFNULL(a_names_command, ''));
SET a_hand_signal_default_descriptions_command := TRIM(IFNULL(a_hand_signal_default_descriptions_command, ''));
SET a_notes_command := TRIM(IFNULL(a_notes_command, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
*/
SET a_output_command_categories := IFNULL(a_output_command_categories, 0);
SET a_output_commands := IFNULL(a_output_commands, 0);
@@ -114,6 +124,12 @@ BEGIN
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_output_command_categories
, a_output_commands
, a_debug
@@ -137,6 +153,9 @@ BEGIN
, code VARCHAR(100)
, name VARCHAR(250)
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE tmp_Command (
@@ -147,13 +166,16 @@ BEGIN
, can_have_button BIT
, notes TEXT
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100) NOT NULL
, msg VARCHAR(4000) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
@@ -162,7 +184,9 @@ BEGIN
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
@@ -171,7 +195,9 @@ BEGIN
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_dog_view
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
@@ -209,7 +235,7 @@ BEGIN
END IF;
CALL parts.p_dog_clear_calc_user(
v_guid
v_guid
, 0 -- a_debug
);
@@ -218,7 +244,7 @@ BEGIN
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- a_guid
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_command_category
, a_get_inactive_command_category
@@ -228,13 +254,19 @@ BEGIN
, a_get_inactive_command -- a_get_inactive_command
, a_ids_command -- a_ids_command
, a_names_command -- a_names_command
, a_hand_signal_default_descriptions_command -- a_hand_signal_default_descriptions_command
, a_notes_command -- a_notes_command
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL parts.p_dog_calc_command (
v_guid -- a_guid
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_command_category
, a_get_inactive_command_category
@@ -244,21 +276,40 @@ BEGIN
, a_get_inactive_command -- a_get_inactive_command
, a_ids_command -- a_ids_command
, a_names_command -- a_names_command
, a_hand_signal_default_descriptions_command -- a_hand_signal_default_descriptions_command
, a_notes_command -- a_notes_command
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM parts.DOG_Command_Category_Temp;
SELECT * FROM parts.DOG_Command_Category_Temp;
SELECT COUNT(*) FROM parts.DOG_Command_Temp;
SELECT * FROM parts.DOG_Command_Temp;
END IF;
INSERT INTO tmp_Command_Category (
id_command_category
, code
, name
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
COMMAND_CATEGORY_T.id_command_category
, COMMAND_CATEGORY_T.code
, COMMAND_CATEGORY_T.name
, COMMAND_CATEGORY_T.active
, COMMAND_CATEGORY_T.does_meet_id_filters
, COMMAND_CATEGORY_T.does_meet_non_id_filters
FROM parts.DOG_Command_Category_Temp COMMAND_CATEGORY_T
WHERE COMMAND_CATEGORY_T.GUID = v_guid
;
@@ -271,6 +322,9 @@ BEGIN
, can_have_button
, notes
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
COMMAND_T.id_command
@@ -280,12 +334,17 @@ BEGIN
, COMMAND_T.can_have_button
, COMMAND_T.notes
, COMMAND_T.active
, COMMAND_T.does_meet_id_filters
, COMMAND_T.does_meet_non_id_filters
FROM parts.DOG_Command_Temp COMMAND_T
WHERE COMMAND_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Command_Category;
SELECT * FROM tmp_Command_Category;
SELECT COUNT(*) FROM tmp_Command;
SELECT * FROM tmp_Command;
END IF;
END IF;
@@ -310,6 +369,9 @@ BEGIN
, t_COMMAND_CATEGORY.code
, t_COMMAND_CATEGORY.name
, t_COMMAND_CATEGORY.active
, t_COMMAND_CATEGORY.does_meet_id_filters
, t_COMMAND_CATEGORY.does_meet_non_id_filters
FROM tmp_Command_Category t_COMMAND_CATEGORY
;
END IF;
@@ -324,6 +386,9 @@ BEGIN
, t_COMMAND.can_have_button
, t_COMMAND.notes
, t_COMMAND.active
, t_COMMAND.does_meet_id_filters
, t_COMMAND.does_meet_non_id_filters
FROM tmp_Command t_COMMAND
;
END IF;
@@ -347,7 +412,7 @@ BEGIN
SELECT * FROM tmp_Command;
END IF;
CALL parts.p_dog_clear_calc_dog(
CALL parts.p_dog_clear_calc_command(
v_guid -- a_guid
, 0 -- a_debug
);
@@ -375,6 +440,34 @@ CALL parts.p_dog_get_many_command (
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_output_command_categories
, 1 -- a_output_commands
, 1 -- a_debug
);
CALL demo.p_dog_get_many_command (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, 'pat,point' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, 'pat,point' -- a_names_command
, 'pat,point' -- a_hand_signal_default_descriptions_command
, 'pat,point' -- a_notes_command
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_output_command_categories
, 1 -- a_output_commands
, 1 -- a_debug