Feat(SQL, UI): 1. Updated User Calc Stored Procedure with Search functionality from previous commit on Command and Dog tables. \n 2. Corrected functionality of active field trash and add icons instead of button with replaceable text. \n 3. Improved styling on Dog Command Link page.

This commit is contained in:
2025-07-06 20:50:35 +01:00
parent 8cb8508dcd
commit 660b15cb8f
28 changed files with 1279 additions and 562 deletions

View File

@@ -8,12 +8,13 @@ DROP PROCEDURE IF EXISTS p_dog_get_many_user;
DELIMITER //
CREATE PROCEDURE p_dog_get_many_user (
IN a_id_user INT
, IN a_id_user_auth0 VARCHAR(200)
, IN a_auth0_id_user VARCHAR(200)
, IN a_get_all_user BIT
, IN a_get_inactive_user BIT
, IN a_ids_user TEXT
, IN a_ids_user_auth0 TEXT
, IN a_auth0_ids_user TEXT
, IN a_names_user TEXT
, IN a_emails_user 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
@@ -34,6 +35,7 @@ BEGIN
DECLARE v_id_permission_user_admin INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_ids_permission_required VARCHAR(4000);
DECLARE v_ids_user TEXT;
DECLARE v_is_new BIT;
DECLARE v_rank_max INT;
DECLARE v_time_start TIMESTAMP(6);
@@ -100,8 +102,9 @@ BEGIN
SET a_get_all_user := IFNULL(a_get_all_user, 1);
SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0);
SET a_ids_user := TRIM(IFNULL(a_ids_user, ''));
SET a_ids_user_auth0 := TRIM(IFNULL(a_ids_user_auth0, ''));
SET a_auth0_ids_user := TRIM(IFNULL(a_auth0_ids_user, ''));
SET a_names_user := TRIM(IFNULL(a_names_user, ''));
SET a_emails_user := TRIM(IFNULL(a_emails_user, ''));
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);
@@ -111,12 +114,13 @@ BEGIN
IF a_debug = 1 THEN
SELECT
a_id_user
, a_id_user_auth0
, a_auth0_id_user
, a_get_all_user
, a_get_inactive_user
, a_ids_user
, a_ids_user_auth0
, a_auth0_ids_user
, a_names_user
, a_emails_user
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -125,18 +129,36 @@ BEGIN
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
CREATE TEMPORARY TABLE tmp_User (
id_user INT NULL
, can_admin_dog BIT NULL
, can_admin_user BIT NULL
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
, can_admin_dog BIT
, can_admin_user BIT
);
CREATE TEMPORARY TABLE tmp_User_Access (
id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL
, id_user INT
, id_permission_required INT NOT NULL
, priority_access_level_required INT NOT NULL
, is_super_user BIT
, priority_access_level_user INT
, has_access BIT
, can_view BIT
, can_edit BIT
, can_admin BIT
);
CREATE TEMPORARY TABLE tmp_Msg_Error (
@@ -145,7 +167,7 @@ BEGIN
, code VARCHAR(100) NOT NULL
, msg TEXT NOT NULL
);
/*
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id (
substring VARCHAR(4000) NOT NULL
, as_int INT NULL
@@ -163,14 +185,13 @@ BEGIN
, as_int INT NULL
);
DELETE FROM tmp_Split_Name;
IF ISNULL(a_id_user) AND NOT ISNULL(a_id_user_auth0) THEN
SET a_id_user := (SELECT U.id_user FROM parts.DOG_User U WHERE U.id_user_auth0 = a_id_user_auth0 LIMIT 1);
IF ISNULL(a_id_user) AND NOT ISNULL(a_auth0_id_user) THEN
SET a_id_user := (SELECT U.id_user FROM parts.DOG_User U WHERE U.id_user_auth0 = a_auth0_id_user LIMIT 1);
END IF;
IF
ISNULL(a_id_user)
AND ISNULL(a_id_user_auth0)
AND ISNULL(a_auth0_id_user)
THEN
INSERT INTO tmp_Msg_Error (
id_type
@@ -186,7 +207,7 @@ BEGIN
END IF;
SET v_has_filter_user_id := CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_ids_user_auth0 = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_auth0_id := CASE WHEN a_auth0_ids_user = '' THEN 0 ELSE 1 END;
SET v_has_filter_user_name := CASE WHEN a_names_user = '' THEN 0 ELSE 1 END;
IF a_debug = 1 THEN
@@ -248,7 +269,7 @@ BEGIN
-- Auth0 User IDs
IF v_has_filter_user_auth0_id = 1 THEN
CALL parts.p_core_split(v_guid, a_ids_user_auth0, ',', FALSE);
CALL parts.p_core_split(v_guid, a_auth0_ids_user, ',', FALSE);
INSERT INTO tmp_Split_Auth0_Id (
substring
@@ -446,14 +467,25 @@ BEGIN
SELECT * FROM tmp_User;
END IF;
*/
-- Calculated fields
-- Can admin dog
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 -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, 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
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
@@ -463,26 +495,54 @@ BEGIN
END IF;
CALL parts.p_dog_calc_user(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, 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
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid;
END IF;
UPDATE tmp_User t_U
INNER JOIN parts.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_dog = CUT.can_admin
INSERT INTO tmp_User (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
, can_admin_dog
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
, CALC_USER_T.can_admin AS can_admin_dog
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
END IF;
@@ -490,11 +550,19 @@ 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 -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, 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
, v_id_permission_dog_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
@@ -502,26 +570,34 @@ BEGIN
END IF;
CALL parts.p_dog_calc_user(
v_guid -- guid
, a_id_user -- ids_user
, FALSE -- get_inactive_user
v_guid -- guid
, a_get_all_user -- get_all_user
, a_get_inactive_user -- get_inactive_user
, a_ids_user -- ids_user
, a_auth0_ids_user -- a_auth0_ids_user
, a_names_user -- a_names_user
, a_emails_user -- a_emails_user
, 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
, v_id_permission_user_admin -- ids_permission
, v_id_access_level_admin -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid;
END IF;
UPDATE tmp_User t_U
INNER JOIN parts.DOG_Calc_User_Temp CUT
ON CUT.GUID = v_guid
AND t_U.id_user = CUT.id_user
SET t_U.can_admin_user = CUT.can_admin
UPDATE tmp_User t_USER
INNER JOIN parts.DOG_Calc_User_Temp CALC_USER_T
ON CALC_USER_T.id_user = t_USER.id_user
AND CALC_USER_T.guid = v_guid
SET t_USER.can_admin_user = CALC_USER_T.can_admin
;
IF a_debug = 1 THEN
SELECT * FROM tmp_User;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
END IF;
@@ -529,10 +605,18 @@ 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 -- guid
v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_ids_permission_required -- ids_permission
, a_auth0_id_user -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 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
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
@@ -541,26 +625,53 @@ BEGIN
END IF;
CALL parts.p_dog_calc_user(
v_guid -- guid
v_guid -- guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, FALSE -- get_inactive_user
, v_ids_permission_required -- ids_permission
, a_auth0_id_user -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 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
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_user -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_User_Access (
id_user
, id_permission_required
, priority_access_level_required
, is_super_user
, priority_access_level_user
, has_access
, can_view
, can_edit
, can_admin
)
SELECT
CALC_USER_T.id_user
, CALC_USER_T.id_permission_required
, CALC_USER_T.priority_access_level_required
, CALC_USER_T.is_super_user
, CALC_USER_T.priority_access_level_user
, CALC_USER_T.has_access
, CALC_USER_T.can_view
, CALC_USER_T.can_edit
, CALC_USER_T.can_admin
FROM parts.DOG_Calc_User_Temp CALC_USER_T
WHERE CALC_USER_T.guid = v_guid
;
IF a_debug = 1 THEN
SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = v_guid;
SELECT * FROM tmp_User_Access;
END IF;
IF NOT EXISTS (
SELECT can_view
FROM parts.DOG_Calc_User_Temp CUT
WHERE
CUT.GUID = v_guid
AND can_view = 1
) THEN
IF NOT EXISTS (SELECT * FROM tmp_User t_USER WHERE t_USER.can_view = 1) THEN
INSERT INTO tmp_Msg_Error (
id_type
, code
@@ -569,11 +680,12 @@ BEGIN
VALUES (
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('You do not have view permissions for ', (SELECT name FROM parts.DOG_Permission P INNER JOIN parts.DOG_Calc_User_Temp CUT ON P.id_permission = CUT.id_permission_required WHERE GUID = v_guid AND IFNULL(can_view, 0) = 0 LIMIT 1))
, CONCAT(
'You do not have view permissions for '
, (SELECT PERMISSION.name FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.id_permission = v_id_permission_user LIMIT 1)
)
)
;
ELSE
SET a_debug := a_debug;
END IF;
CALL parts.p_dog_clear_calc_user( v_guid, FALSE );
@@ -582,34 +694,25 @@ BEGIN
IF 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 * FROM tmp_Dog_Calc_Dog;
SELECT * FROM tmp_User;
END IF;
DELETE FROM tmp_Dog_Calc_Dog;
DELETE FROM tmp_User;
END IF;
-- Returns
/* NULL record required for flask sql_alchemy to detect result set */
IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN
DELETE FROM tmp_User;
INSERT INTO tmp_User ( id_user )
VALUES ( NULL );
END IF;
SELECT
U.id_user
, U.id_user_auth0
, U.firstname
, U.surname
, U.email
, U.is_email_verified
, U.is_super_user
, t_U.can_admin_dog
, t_U.can_admin_user
, v_is_new AS is_new
FROM tmp_User t_U
INNER JOIN parts.DOG_User U ON t_U.id_user = U.id_user
USER.id_user
, USER.id_user_auth0
, USER.firstname
, USER.surname
, USER.email
, USER.is_email_verified
, USER.is_super_user
, t_USER.can_admin_dog
, t_USER.can_admin_user
FROM tmp_User t_USER
INNER JOIN parts.DOG_User USER ON t_USER.id_user = USER.id_user
;
# Errors
@@ -628,14 +731,14 @@ BEGIN
;
IF a_debug = 1 THEN
SELECT 'End';
SELECT * FROM tmp_User;
SELECT * FROM tmp_User_Access;
END IF;
-- Clean up
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Auth0_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Access;
DROP TEMPORARY TABLE IF EXISTS tmp_User;
IF a_debug = 1 THEN
@@ -645,43 +748,24 @@ END //
DELIMITER ;
/*
CALL p_dog_get_many_user (
NULL
, 'google-oauth2|109567376920138999933'
, False
, False
-- , False
, NULL
, 'google-oauth2|109567376920138999933'
, 0
);
NULL # a_id_user
, 'auth0|6582b95c895d09a70ba10fef' # a_id_user_auth0
, 0 # a_get_all_user
, 0 # a_get_inactive_user
-- , 0 # a_get_first_user_only
, NULL # a_ids_user
, 'auth0|6582b95c895d09a70ba10fef' # a_ids_user_auth0
, 0 -- a_debug
);*/
/*
select * FROM parts.DOG_Calc_User_Temp;
delete FROM parts.DOG_Calc_User_Temp;
SELECT *
FROM parts.DOG_USER;
*/
CALL p_dog_get_many_user(
NULL -- :a_id_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_id_user_auth0,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_id_user,
, 1 -- :a_get_all_user,
, 0 -- :a_get_inactive_user,
-- , 0 -- :a_get_first_user_only,
, NULL -- :a_ids_user,
, 'auth0|6582b95c895d09a70ba10fef' -- :a_ids_user_auth0
, 'auth0|6582b95c895d09a70ba10fef' -- :a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 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,
@@ -689,4 +773,3 @@ CALL p_dog_get_many_user(
, 0 -- a_debug
);
*/