Feat: 1. User-level access added to Dogs, Command Categories, Locations, Button Shapes, Images, Distraction Types, Distraction Intensity Levels, Bribes, Response Quality Metrics, Obedience Levels. \n 2. New user (Founding Partner) creation setup in database and front-end but front-end not tested.

This commit is contained in:
2025-08-20 19:29:01 +01:00
parent e370e3a709
commit 07543994bf
42 changed files with 1164 additions and 1384 deletions

View File

@@ -78,20 +78,21 @@ BEGIN
FROM fetchmetrics.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_Command t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
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_Command t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Command;
END;
@@ -343,7 +344,7 @@ BEGIN
, v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, a_debug -- a_debug
, 0 -- a_debug
;
END IF;
@@ -362,7 +363,7 @@ BEGIN
, v_id_permission_command_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, a_debug -- a_debug
, 0 -- a_debug
);
INSERT INTO tmp_Calc_User_Access_Calc_Command (
@@ -410,7 +411,7 @@ BEGIN
-- Command Categories
IF v_has_filter_command_category_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_command_category, ',', a_debug);
CALL fetchmetrics.p_core_split(a_guid, a_ids_command_category, ',', 0);
SET sql_mode = '';
@@ -431,7 +432,7 @@ BEGIN
END IF;
IF v_has_filter_command_category_name = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_names_command_category, ',', a_debug);
CALL fetchmetrics.p_core_split(a_guid, a_names_command_category, ',', 0);
SET sql_mode = '';
@@ -584,7 +585,7 @@ BEGIN
(
v_has_filter_command_category_name = 0
)
OR COMMAND_CATEGORY_FILTERS.does_meet_name_filter = 1
OR COMMAND_CATEGORY_FILTERS.does_meet_name_filter = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Command_Category COMMAND_CATEGORY
LEFT JOIN Command_Category_Filters COMMAND_CATEGORY_FILTERS ON COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_FILTERS.id_command_category
@@ -617,7 +618,7 @@ BEGIN
-- Commands
IF v_has_filter_command_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_command, ',', a_debug);
CALL fetchmetrics.p_core_split(a_guid, a_ids_command, ',', 0);
SET sql_mode = '';
@@ -638,7 +639,7 @@ BEGIN
END IF;
IF v_has_filter_command_name = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_names_command, ',', a_debug);
CALL fetchmetrics.p_core_split(a_guid, a_names_command, ',', 0);
SET sql_mode = '';
@@ -659,7 +660,7 @@ BEGIN
END IF;
IF v_has_filter_command_hand_signal_default_description = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_hand_signal_default_descriptions_command, ',', a_debug);
CALL fetchmetrics.p_core_split(a_guid, a_hand_signal_default_descriptions_command, ',', 0);
SET sql_mode = '';
@@ -680,7 +681,7 @@ BEGIN
END IF;
IF v_has_filter_command_notes = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_notes_command, ',', a_debug);
CALL fetchmetrics.p_core_split(a_guid, a_notes_command, ',', 0);
SET sql_mode = '';
@@ -958,14 +959,13 @@ BEGIN
DELETE t_COMMAND
FROM tmp_Command_Calc_Command t_COMMAND
LEFT JOIN tmp_Command_Category_Calc_Command t_COMMAND_CATEGORY ON t_COMMAND.id_command_category = t_COMMAND_CATEGORY.id_command_category
LEFT JOIN fetchmetrics.DOG_Command_Category_User_Link COMMAND_CATEGORY_USER_LINK ON t_COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_USER_LINK.id_command_category
LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER ON COMMAND_CATEGORY_USER_LINK.id_user = t_USER.id_user
LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER ON t_COMMAND_CATEGORY.id_user = t_USER.id_user
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_COMMAND.does_meet_id_filters = 0
OR t_COMMAND_CATEGORY.does_meet_id_filters = 0
OR IFNULL(t_COMMAND_CATEGORY.does_meet_id_filters, 0) = 0
OR IFNULL(t_USER.does_meet_id_filters, 0) = 0
)
)
@@ -973,24 +973,24 @@ BEGIN
a_require_all_non_id_search_filters_met = 1
AND (
t_COMMAND.does_meet_non_id_filters = 0
OR t_COMMAND_CATEGORY.does_meet_non_id_filters = 0
OR IFNULL(t_COMMAND_CATEGORY.does_meet_non_id_filters, 0) = 0
OR IFNULL(t_USER.does_meet_non_id_filters, 0) = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_COMMAND.does_meet_id_filters = 0
AND t_COMMAND_CATEGORY.does_meet_id_filters = 0
AND IFNULL(t_COMMAND_CATEGORY.does_meet_id_filters, 0) = 0
AND IFNULL(t_USER.does_meet_id_filters, 0) = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_COMMAND.does_meet_non_id_filters = 0
AND t_COMMAND_CATEGORY.does_meet_non_id_filters = 0
AND IFNULL(t_COMMAND_CATEGORY.does_meet_non_id_filters, 0) = 0
AND IFNULL(t_USER.does_meet_non_id_filters, 0) = 0
)
;
/*
WITH
Category_And_Best_Command AS (
SELECT
@@ -1000,58 +1000,9 @@ BEGIN
FROM tmp_Command_Calc_Command t_COMMAND
GROUP BY t_COMMAND.id_command_category
)
/*
, Command_Category_Access AS (
SELECT
COMMAND_CATEGORY.id_command_category
, CASE WHEN
v_is_super_user = 1
OR (
t_USER.id_user IS NOT NULL
AND IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none) <= v_priority_access_level_view
)
THEN 1 ELSE 0 END AS can_user_access_command_category
, ROW_NUMBER() OVER (
PARTITION BY COMMAND_CATEGORY.id_command_category
ORDER BY CASE WHEN
v_is_super_user = 1
OR (
t_USER.id_user IS NOT NULL
AND IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none) <= v_priority_access_level_view
)
THEN 1 ELSE 0 END DESC
) AS index_link_in_command_category
, t_USER.does_meet_id_filters AS does_user_meet_id_filters
, t_USER.does_meet_non_id_filters AS does_user_meet_non_id_filters
FROM fetchmetrics.DOG_Command_Category COMMAND_CATEGORY
LEFT JOIN fetchmetrics.DOG_Command_Category_User_Link COMMAND_CATEGORY_USER_LINK
ON COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_USER_LINK.id_command_category
AND (
(
a_get_inactive_command_category = 1
AND a_get_inactive_user = 1
)
OR COMMAND_CATEGORY_USER_LINK.active = 1
)
LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER
ON COMMAND_CATEGORY_USER_LINK.id_user = t_USER.id_user
AND (
a_get_inactive_user = 1
OR t_USER.active = 1
)
LEFT JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL
ON COMMAND_CATEGORY_USER_LINK.id_access_level = ACCESS_LEVEL.id_access_level
AND ACCESS_LEVEL.active = 1
)
*/
SELECT *
DELETE t_COMMAND_CATEGORY -- SELECT *
FROM tmp_Command_Category_Calc_Command t_COMMAND_CATEGORY
LEFT JOIN Category_And_Best_Command CATEGORY_BEST ON t_COMMAND_CATEGORY.id_command_category = CATEGORY_BEST.id_command_category
/*
LEFT JOIN Command_Category_Access COMMAND_CATEGORY_ACCESS
ON t_COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_ACCESS.id_command_category
AND COMMAND_CATEGORY_ACCESS.index_link_in_command_category = 1
*/
LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER ON t_COMMAND_CATEGORY.id_user = t_USER.id_user
WHERE
(
@@ -1083,16 +1034,14 @@ BEGIN
AND IFNULL(t_USER.does_meet_non_id_filters, 0) = 0
)
;
*/
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Commands and Categories';
-- SELECT * FROM tmp_Command_Category_Calc_Command;
-- SELECT * FROM tmp_Command_Calc_Command;
END IF;
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT '(&) Before non-permitted data deletion';
SELECT * FROM tmp_Command_Category_Calc_Command;
SELECT * FROM tmp_Command_Calc_Command;
SELECT * FROM tmp_Msg_Error_Calc_Command;