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

@@ -9,18 +9,18 @@ DROP TRIGGER IF EXISTS before_update_DOG_Unit_Measurement;
DELIMITER //
CREATE TRIGGER before_insert_DOG_Unit_Measurement
BEFORE INSERT ON DOG_Unit_Measurement
BEFORE INSERT ON parts.DOG_Unit_Measurement
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM DOG_User WHERE firstname = CURRENT_USER()), -1));
SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT U.id_user FROM parts.DOG_User U WHERE U.firstname = CURRENT_USER()), -1));
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER before_update_DOG_Unit_Measurement
BEFORE UPDATE ON DOG_Unit_Measurement
BEFORE UPDATE ON parts.DOG_Unit_Measurement
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
@@ -28,12 +28,12 @@ BEGIN
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO DOG_Unit_Measurement_Audit (
id_unit_measurement,
name_field,
value_prev,
value_new,
id_change_set
INSERT INTO parts.DOG_Unit_Measurement_Audit (
id_unit_measurement
, name_field
, value_prev
, value_new
, id_change_set
)
# Changed name_singular
SELECT NEW.id_unit_measurement, 'name_singular', OLD.name_singular, NEW.name_singular, NEW.id_change_set

View File

@@ -9,18 +9,18 @@ DROP TRIGGER IF EXISTS before_update_DOG_Unit_Measurement_Conversion;
DELIMITER //
CREATE TRIGGER before_insert_DOG_Unit_Measurement_Conversion
BEFORE INSERT ON DOG_Unit_Measurement_Conversion
BEFORE INSERT ON parts.DOG_Unit_Measurement_Conversion
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT id_user FROM DOG_User WHERE firstname = CURRENT_USER()), -1));
SET NEW.created_by := IFNULL(NEW.created_by, IFNULL((SELECT U.id_user FROM parts.DOG_User U WHERE U.firstname = CURRENT_USER()), -1));
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER before_update_DOG_Unit_Measurement_Conversion
BEFORE UPDATE ON DOG_Unit_Measurement_Conversion
BEFORE UPDATE ON parts.DOG_Unit_Measurement_Conversion
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
@@ -28,12 +28,12 @@ BEGIN
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO DOG_Unit_Measurement_Conversion_Audit (
id_conversion,
name_field,
value_prev,
value_new,
id_change_set
INSERT INTO parts.DOG_Unit_Measurement_Conversion_Audit (
id_conversion
, name_field
, value_prev
, value_new
, id_change_set
)
# Changed id_unit_derived
SELECT NEW.id_conversion, 'id_unit_derived', OLD.id_unit_derived, NEW.id_unit_derived, NEW.id_change_set

View File

@@ -13,17 +13,18 @@ CREATE PROCEDURE parts.p_dog_get_many_command (
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_guid BINARY(36);
DECLARE v_has_filter_command_id BIT;
DECLARE v_has_filter_command_name BIT;
DECLARE v_guid BINARY(36);
DECLARE v_id_permission_command_view INT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_command_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE v_can_view BIT;
DECLARE exit handler for SQLEXCEPTION
BEGIN
@@ -39,7 +40,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 (
@@ -79,6 +80,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_command_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);
SET a_get_all_command := IFNULL(a_get_all_command, 0);
@@ -120,7 +122,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
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
@@ -150,7 +152,7 @@ BEGIN
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = v_guid
@@ -169,7 +171,7 @@ BEGIN
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = v_guid
@@ -252,7 +254,9 @@ BEGIN
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_command_view
, v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
@@ -261,7 +265,9 @@ BEGIN
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_command_view
, v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);

View File

@@ -16,6 +16,7 @@ CREATE PROCEDURE parts.p_dog_get_many_understanding_level (
BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_id_access_level_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_has_filter_understanding_level_id BIT;
@@ -41,7 +42,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 (
@@ -81,6 +82,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_understanding_level_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);
SET a_get_all_understanding_level := IFNULL(a_get_all_understanding_level, 0);
@@ -126,7 +128,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
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
@@ -163,7 +165,7 @@ BEGIN
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = v_guid
@@ -182,7 +184,7 @@ BEGIN
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = v_guid
@@ -201,7 +203,7 @@ BEGIN
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = v_guid
@@ -289,7 +291,9 @@ BEGIN
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_understanding_level_view
, v_id_permission_understanding_level_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
@@ -298,7 +302,9 @@ BEGIN
v_guid
, a_id_user
, FALSE -- a_get_inactive_user
, v_id_permission_understanding_level_view
, v_id_permission_understanding_level_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);