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

@@ -1,142 +1,210 @@
USE parts;
DROP PROCEDURE IF EXISTS parts.p_dog_user_eval;
DROP PROCEDURE IF EXISTS parts.p_dog_calc_user;
-- Clear previous proc
DROP PROCEDURE IF EXISTS p_dog_user_eval;
DROP PROCEDURE IF EXISTS p_dog_calc_user;
DELIMITER //
CREATE PROCEDURE parts.p_dog_calc_user (
CREATE PROCEDURE p_dog_calc_user (
IN a_guid BINARY(36)
, IN a_ids_user TEXT
, IN a_get_inactive_user BIT
, IN a_ids_permission VARCHAR(4000)
, IN a_ids_permission TEXT
, IN a_ids_access_level TEXT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_code_type_error_bad_data VARCHAR(200);
DECLARE v_code_type_error_no_permission VARCHAR(200);
DECLARE v_has_filter_permission BIT;
DECLARE v_has_filter_user BIT;
DECLARE v_has_filter_access_level BIT;
DECLARE v_id_access_level INT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_permission INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE v_ids_row_delete VARCHAR(500);
DECLARE v_code_type_error_bad_data VARCHAR(250);
DECLARE v_id_type_error_bad_data INT;
DECLARE v_code_type_error_no_permission VARCHAR(250);
DECLARE v_id_permission_required INT;
DECLARE v_priority_access_level_required INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_row_delete VARCHAR(500);
DECLARE v_priority_access_level_view INT;
DECLARE v_priority_access_level_edit INT;
DECLARE v_priority_access_level_admin INT;
DECLARE v_priority_access_level INT;
DECLARE v_time_start TIMESTAMP(6);
DECLARE exit handler for SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@sqlstate = RETURNED_SQLSTATE
, @errno = MYSQL_ERRNO
, @text = MESSAGE_TEXT
;
ROLLBACK;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL
, code VARCHAR(100) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM parts.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_User t_ERROR
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT id_type FROM parts.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1);
SET v_code_type_error_no_permission := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE code = 'NO_PERMISSION' LIMIT 1);
SET v_priority_access_level_view := (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
CALL parts.p_core_validate_guid ( a_guid );
SET v_code_type_error_no_permission := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE id_type = 2);
CALL parts.p_validate_guid ( a_guid );
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_permission := TRIM(IFNULL(a_ids_permission, ''));
SET a_ids_access_level := TRIM(IFNULL(a_ids_access_level, ''));
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT 'Arguments';
SELECT
a_guid
, a_ids_user
, a_get_inactive_user
, a_ids_permission
, a_ids_access_level
, a_show_errors
, a_debug
;
SELECT 'Derived variables';
SELECT
v_code_type_error_bad_data
, v_code_type_error_no_permission
, v_id_type_error_bad_data
, v_priority_access_level_view
, v_time_start
;
END IF;
DROP TABLE IF EXISTS tmp_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
-- Clear previous proc results
DROP TABLE IF EXISTS tmp_Split_Calc_User;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DROP TABLE IF EXISTS tmp_Calc_User;
-- Permanent Table
CREATE TEMPORARY TABLE tmp_Calc_User (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT NULL
, priority_access_level_user INT NULL
, has_access BIT
, is_super_user BIT
, priority_access_level_user INT
, can_view BIT
, can_edit BIT
, can_admin BIT
);
CREATE TEMPORARY TABLE tmp_User_Calc_User (
id_user INT NOT NULL
id_user INT NOT NULL
, is_super_user BIT NOT NULL
-- , id_access_level INT
, priority_access_level INT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User (
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT
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_Calc_User (
substring VARCHAR(4000) NOT NULL
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
);
DELETE FROM tmp_Split_Calc_User;
SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET a_ids_permission = REPLACE(a_ids_permission, '|', ',');
SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END;
-- SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
-- Permission IDs
IF NOT v_has_filter_permission THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, 'Permission ID required.'
;
ELSE
CALL parts.p_core_split(a_guid, a_ids_permission, ',', a_debug);
SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END;
SET v_has_filter_access_level = CASE WHEN a_ids_access_level = '' THEN 0 ELSE 1 END;
SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1);
SET v_priority_access_level_view = (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level_view);
SET v_priority_access_level_edit = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'EDIT' LIMIT 1);
SET v_priority_access_level_admin = (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'ADMIN' LIMIT 1);
IF a_debug = 1 THEN
SELECT
v_priority_access_level_view
, v_priority_access_level_edit
, v_priority_access_level_admin
;
END IF;
# Access levels
IF v_has_filter_access_level = 1 THEN
IF a_debug = 1 THEN
SELECT
'p_core_split'
, a_guid
, a_ids_access_level
, ','
, a_debug
;
END IF;
CALL parts.p_core_clear_split( a_guid );
CALL parts.p_core_split(a_guid, a_ids_access_level, ',', a_debug);
DELETE FROM tmp_Split_Calc_User;
INSERT INTO tmp_Split_Calc_User (
substring
, as_int
)
SELECT
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = a_guid
AND NOT ISNULL(substring)
AND substring != ''
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) -- AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'Access Levels split', a_ids_access_level;
SELECT *
FROM tmp_Split_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
-- Invalid or inactive
# Invalid IDs
IF EXISTS (
SELECT PERM.id_permission
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission
WHERE
ISNULL(t_S.as_int)
OR ISNULL(PERM.id_permission)
OR PERM.active = 0
) THEN
SELECT t_SPLIT.substring
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(ACCESS_LEVEL.id_access_level)
OR ACCESS_LEVEL.active = 0
) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
@@ -145,69 +213,141 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission
, CONCAT('Invalid or inactive access level IDs: ', GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','))
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
WHERE
ISNULL(t_S.as_int)
OR ISNULL(PERM.id_permission)
OR PERM.active = 0
ISNULL(t_SPLIT.as_int)
OR ISNULL(ACCESS_LEVEL.id_access_level)
OR ACCESS_LEVEL.active = 0
;
SET v_has_filter_access_level = 0;
ELSE
SET v_id_access_level := (
SELECT ACCESS_LEVEL.id_access_level
FROM tmp_Split_Calc_User t_SPLIT
INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON t_SPLIT.as_int = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1
ORDER BY ACCESS_LEVEL.priority ASC
LIMIT 1
);
END IF;
END IF;
DELETE FROM tmp_Split_Calc_User;
IF ISNULL(v_id_access_level) THEN
SET v_id_access_level = v_id_access_level_view;
END IF;
SET v_priority_access_level := (SELECT priority FROM parts.DOG_Access_Level WHERE id_access_level = v_id_access_level LIMIT 1);
-- Permission IDs
IF v_has_filter_permission = 1 THEN
CALL parts.p_core_clear_split( a_guid );
CALL parts.p_core_split(a_guid, a_ids_permission, ',', a_debug);
DELETE FROM tmp_Split_Calc_User;
INSERT INTO tmp_Split_Calc_User (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp SPLIT_T
WHERE
GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') != ''
;
IF a_debug = 1 THEN
SELECT 'Permissions split', a_ids_permission;
SELECT *
FROM tmp_Split_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
# Invalid or inactive
IF EXISTS (SELECT PERMISSION.id_permission FROM tmp_Split_Calc_User t_SPLIT LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(PERMISSION.id_permission) OR PERMISSION.active = 0) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(PERMISSION.id_permission)
OR PERMISSION.active = 0
;
ELSE
SELECT
PERM.id_permission
, PERM.id_access_level_required
INTO
v_id_permission_required
, v_priority_access_level_required
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission
INNER JOIN parts.DOG_Access_Level AL ON PERM.id_access_level_required = AL.id_access_level
ORDER BY AL.priority ASC
LIMIT 1
;
IF ISNULL(v_id_permission_required) THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, 'Valid Permission ID required.'
;
END IF;
SET v_id_permission_required := (
SELECT PERMISSION.id_permission
FROM tmp_Split_Calc_User t_SPLIT
INNER JOIN parts.DOG_Permission PERMISSION ON t_SPLIT.as_int = PERMISSION.id_permission
INNER JOIN parts.DOG_Access_Level ACCESS_LEVEL ON PERMISSION.id_access_level_required = ACCESS_LEVEL.id_access_level
ORDER BY ACCESS_LEVEL.priority ASC
LIMIT 1
);
END IF;
END IF;
DELETE FROM tmp_Split_Calc_User;
IF a_debug = 1 THEN
SELECT v_id_permission_required;
END IF;
-- Users
# Users
CALL parts.p_core_clear_split( a_guid );
CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug);
DELETE FROM tmp_Split_Calc_User;
INSERT INTO tmp_Split_Calc_User (
substring
, as_int
)
SELECT
substring
substring
, CONVERT(substring, DECIMAL(10,0)) AS as_int
FROM parts.CORE_Split_Temp
WHERE
GUID = a_guid
WHERE
GUID = a_guid
AND NOT ISNULL(substring)
AND substring != ''
;
IF a_debug = 1 THEN
SELECT 'Users split', a_ids_user;
SELECT *
FROM tmp_Split_Calc_User;
END IF;
CALL parts.p_core_clear_split( a_guid );
IF a_debug = 1 THEN
SELECT v_id_permission_required, v_id_access_level, v_priority_access_level;
SELECT * FROM tmp_User_Calc_User;
SELECT * FROM tmp_Msg_Error_Calc_User;
END IF;
-- Invalid or inactive
IF EXISTS (SELECT U.id_user FROM tmp_Split_Calc_User t_S LEFT JOIN parts.DOG_User U ON t_S.as_int = U.id_user WHERE ISNULL(t_S.as_int) OR ISNULL(U.id_user) OR (a_get_inactive_user = 0 AND U.active = 0)) THEN
# Invalid or inactive
IF EXISTS (
SELECT USER.id_user
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND USER.active = 0
)
)
THEN
INSERT INTO tmp_Msg_Error_Calc_User (
id_type
, code
@@ -216,88 +356,72 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Calc_User t_S
LEFT JOIN parts.DOG_User U ON t_S.as_int = U.id_user
, CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ','), 'NULL'))
FROM tmp_Split_Calc_User t_SPLIT
LEFT JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
WHERE
ISNULL(t_S.as_int)
OR ISNULL(U.id_user)
ISNULL(t_SPLIT.as_int)
OR ISNULL(USER.id_user)
OR (
a_get_inactive_user = 0
AND U.active = 0
AND USER.active = 0
)
;
ELSE
IF NOT EXISTS (SELECT * FROM tmp_Split_Calc_User) THEN
INSERT INTO tmp_Split_Calc_User (substring, as_int)
INSERT INTO tmp_Split_Calc_User ( substring, as_int )
VALUES ( '', NULL );
END IF;
IF a_debug = 1 THEN
SELECT *
FROM tmp_Split_Calc_User;
END IF;
INSERT INTO tmp_User_Calc_User (
id_user
, is_super_user
, priority_access_level
)
SELECT
U.id_user
, IFNULL(U.is_super_user, 0) AS is_super_user
, IFNULL(MIN(AL_U.priority), v_priority_access_level_view) AS priority_access_level
FROM tmp_Split_Calc_User t_S
INNER JOIN parts.DOG_User U ON t_S.as_int = U.id_user
LEFT JOIN parts.DOG_User_Role_Link URL
ON U.id_user = URL.id_user
AND URL.active
LEFT JOIN parts.DOG_Role_Permission_Link RPL
ON URL.id_role = RPL.id_role
AND RPL.active
LEFT JOIN parts.DOG_Access_Level AL_U
ON RPL.id_access_level = AL_U.id_access_level
AND AL_U.active
GROUP BY U.id_user
USER.id_user
, IFNULL(USER.is_super_user, 0) AS is_super_user
, IFNULL(MIN(ACCESS_LEVEL.priority), v_priority_access_level_view) AS priority_access_level
FROM tmp_Split_Calc_User t_SPLIT
INNER JOIN parts.DOG_User USER ON t_SPLIT.as_int = USER.id_user
LEFT JOIN parts.DOG_User_Role_Link USER_ROLE_LINK
ON USER.id_user = USER_ROLE_LINK.id_user
AND USER_ROLE_LINK.active
LEFT JOIN parts.DOG_Role_Permission_Link ROLE_PERMISSION_LINK
ON USER_ROLE_LINK.id_role = ROLE_PERMISSION_LINK.id_role
AND ROLE_PERMISSION_LINK.active
LEFT JOIN parts.DOG_Access_Level ACCESS_LEVEL
ON ROLE_PERMISSION_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active
GROUP BY USER.id_user
;
IF a_debug = 1 THEN
SELECT
t_UCU.id_user
, v_id_permission_required
, v_priority_access_level_required
, t_UCU.priority_access_level AS priority_access_level_user
, t_UCU.is_super_user AS is_super_user
FROM tmp_User_Calc_User t_UCU
;
END IF;
INSERT INTO tmp_Calc_User (
id_user
, id_permission_required
, priority_access_level_required
, priority_access_level_user
, is_super_user
, is_super_user
)
SELECT
t_UCU.id_user
t_USER.id_user
, v_id_permission_required
, v_priority_access_level_required
, t_UCU.priority_access_level AS priority_access_level_user
, t_UCU.is_super_user AS is_super_user
FROM tmp_User_Calc_User t_UCU
, v_priority_access_level AS priority_access_level_required
, t_USER.is_super_user AS is_super_user
, t_USER.priority_access_level AS priority_access_level_user
FROM tmp_User_Calc_User t_USER
;
# SET v_has_filter_user = EXISTS ( SELECT * FROM tmp_User_Calc_User LIMIT 1 );
END IF;
DELETE FROM tmp_Split_Calc_User;
-- Calculated fields
UPDATE tmp_Calc_User t_CU
UPDATE tmp_Calc_User t_CALC_USER
SET
t_CU.has_access = (
(t_CU.is_super_user = 1)
OR (t_CU.priority_access_level_user <= t_CU.priority_access_level_required)
)
t_CALC_USER.can_view = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_view AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required)
, t_CALC_USER.can_edit = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_edit AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required)
, t_CALC_USER.can_admin = t_CALC_USER.is_super_user = 1 OR (t_CALC_USER.priority_access_level_user <= v_priority_access_level_admin AND t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required)
;
-- Export data to staging table
@@ -308,23 +432,46 @@ BEGIN
, id_user
, id_permission_required
, priority_access_level_required
, priority_access_level_user
, is_super_user
, has_access
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
)
SELECT
a_guid
, t_CU.id_user
, t_CU.id_permission_required
, t_CU.priority_access_level_required
, t_CU.priority_access_level_user
, t_CU.is_super_user
, t_CU.has_access
FROM tmp_Calc_User t_CU
, t_CALC_USER.id_user
, t_CALC_USER.id_permission_required
, t_CALC_USER.priority_access_level_required
, t_CALC_USER.is_super_user
, t_CALC_USER.priority_access_level_user
, CASE WHEN t_CALC_USER.priority_access_level_user <= t_CALC_USER.priority_access_level_required THEN 1 ELSE 0 END AS has_access
, t_CALC_USER.can_view
, t_CALC_USER.can_edit
, t_CALC_USER.can_admin
FROM tmp_Calc_User t_CALC_USER
;
COMMIT;
END IF;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_User t_ERROR
INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 THEN
SELECT * FROM tmp_Msg_Error_Calc_User;
SELECT * FROM tmp_Calc_User;
@@ -334,9 +481,10 @@ BEGIN
END IF;
-- Clean up
DROP TABLE IF EXISTS tmp_Calc_User;
DROP TABLE IF EXISTS tmp_Split_Calc_User;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DROP TABLE IF EXISTS tmp_User_Calc_User;
DELETE FROM tmp_Split_Calc_User;
DROP TABLE IF EXISTS tmp_Calc_User;
IF a_debug = 1 THEN
CALL parts.p_debug_timing_reporting( v_time_start );
@@ -348,29 +496,45 @@ DELIMITER ;
CALL parts.p_dog_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_debug
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
CALL parts.p_dog_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_debug
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '2' -- a_ids_permission
, '1' -- a_ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
DELETE FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
*/
-- SELECT * FROM parts.DOG_Calc_User_Temp;
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
CALL parts.p_dog_clear_calc_user ( 'chips ', 0 );
-- SELECT * FROM parts.DOG_Calc_User_Temp;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
CALL parts.p_dog_calc_user(
'chips '-- a_guid
, '1' -- a_ids_user
, 0 -- a_get_inactive_user
, '8' -- a_ids_permission
, '1' -- a_ids_access_level
, 1 -- a_show_errors
, 0 -- a_debug
);
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = 'chips ';
CALL parts.p_dog_clear_calc_user ( 'chips ', 0 );
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_User;
DELETE FROM demo.DOG_Calc_User_Temp;
CALL demo.p_dog_calc_user (
'chips ' -- a_guid
, 1 -- a_ids_user
, 0 -- a_get_inactive_user
, '7' -- a_ids_permission
, 0 -- a_debug
);
SELECT * FROM demo.DOG_Calc_User_Temp;
*/