mirror of
https://github.com/opelly27/WinStudentGoalTracker.git
synced 2026-05-20 02:57:36 +00:00
Added Goals fields
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `sp_ProgressEvent_Save`(
|
||||
IN p_id_progress_event CHAR(36),
|
||||
IN p_id_goal CHAR(36),
|
||||
IN p_id_user_created CHAR(36),
|
||||
IN p_content TEXT,
|
||||
IN p_is_sensitive TINYINT(1),
|
||||
IN p_is_new TINYINT(1),
|
||||
IN p_benchmark_ids TEXT
|
||||
)
|
||||
BEGIN
|
||||
-- Insert or update the progress event
|
||||
IF p_is_new = 1 THEN
|
||||
INSERT INTO progress_event
|
||||
(
|
||||
id_progress_event,
|
||||
id_goal,
|
||||
id_user_created,
|
||||
content,
|
||||
is_sensitive,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
p_id_progress_event,
|
||||
p_id_goal,
|
||||
p_id_user_created,
|
||||
p_content,
|
||||
p_is_sensitive,
|
||||
UTC_TIMESTAMP(),
|
||||
UTC_TIMESTAMP()
|
||||
);
|
||||
ELSE
|
||||
UPDATE progress_event
|
||||
SET
|
||||
content = COALESCE(p_content, content),
|
||||
updated_at = UTC_TIMESTAMP()
|
||||
WHERE id_progress_event = p_id_progress_event;
|
||||
END IF;
|
||||
-- Sync benchmark associations: remove those not in the list
|
||||
DELETE FROM progress_event_benchmark
|
||||
WHERE id_progress_event = p_id_progress_event
|
||||
AND (p_benchmark_ids IS NULL
|
||||
OR LENGTH(TRIM(p_benchmark_ids)) = 0
|
||||
OR FIND_IN_SET(id_benchmark, p_benchmark_ids) = 0);
|
||||
-- Add associations that are in the list but not yet in the table
|
||||
IF p_benchmark_ids IS NOT NULL AND LENGTH(TRIM(p_benchmark_ids)) > 0 THEN
|
||||
INSERT INTO progress_event_benchmark (id_progress_event_benchmark, id_progress_event, id_benchmark, created_at)
|
||||
SELECT UUID(), p_id_progress_event, b.id_benchmark, UTC_TIMESTAMP()
|
||||
FROM benchmark b
|
||||
WHERE FIND_IN_SET(b.id_benchmark, p_benchmark_ids) > 0
|
||||
AND b.id_benchmark NOT IN (
|
||||
SELECT peb.id_benchmark
|
||||
FROM progress_event_benchmark peb
|
||||
WHERE peb.id_progress_event = p_id_progress_event
|
||||
);
|
||||
END IF;
|
||||
-- Return the progress event ID for the caller
|
||||
SELECT p_id_progress_event AS progressEventId;
|
||||
END;;
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user