181 lines
3.3 KiB
SQL
181 lines
3.3 KiB
SQL
|
|
USE PARTSLTD_PROD;
|
|
|
|
/*
|
|
|
|
CALL p_shop_edit_user (
|
|
'auth0|6582b95c895d09a70ba10fef', # a_id_user
|
|
'', # a_name
|
|
'', # a_email
|
|
0 # a_email_verified
|
|
)
|
|
|
|
*/
|
|
|
|
|
|
-- Clear previous proc
|
|
DROP PROCEDURE IF EXISTS p_shop_edit_user;
|
|
|
|
|
|
DELIMITER //
|
|
CREATE PROCEDURE p_shop_edit_user (
|
|
IN a_id_user VARCHAR(200),
|
|
IN a_name VARCHAR(255),
|
|
IN a_email VARCHAR(254),
|
|
IN a_email_verified BIT
|
|
)
|
|
BEGIN
|
|
-- Argument redeclaration
|
|
-- Variable declaration
|
|
DECLARE v_has_filter_user BIT;
|
|
-- DECLARE v_now DATETIME;
|
|
|
|
|
|
-- Argument validation + default values
|
|
IF a_id_user IS NULL THEN
|
|
SET a_id_user = '';
|
|
ELSE
|
|
SET a_id_user = TRIM(a_id_user);
|
|
END IF;
|
|
IF a_name IS NULL THEN
|
|
SET a_name = '';
|
|
ELSE
|
|
SET a_name = TRIM(a_name);
|
|
END IF;
|
|
IF a_email IS NULL THEN
|
|
SET a_email = '';
|
|
ELSE
|
|
SET a_email = TRIM(a_email);
|
|
END IF;
|
|
IF a_email_verified IS NULL THEN
|
|
SET a_email_verified = 0;
|
|
END IF;
|
|
|
|
-- Temporary tables
|
|
DROP TABLE IF EXISTS tmp_Msg_Error;
|
|
DROP TABLE IF EXISTS tmp_Shop_User;
|
|
|
|
CREATE TABLE tmp_Shop_User (
|
|
id_user VARCHAR(200) NOT NULL,
|
|
CONSTRAINT FK_tmp_Shop_User_id_user
|
|
FOREIGN KEY (id_user)
|
|
REFERENCES Shop_User(id_user),
|
|
active BIT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE tmp_Msg_Error (
|
|
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
|
id_type INT NOT NULL,
|
|
# code VARCHAR(50) NOT NULL,
|
|
# CONSTRAINT chk_tmp_Msg_Error_code CHECK (code IN (SELECT code FROM Shop_Msg_Error_Type)),
|
|
CONSTRAINT FK_tmp_Msg_Error_id_type
|
|
FOREIGN KEY (id_type)
|
|
REFERENCES Shop_Msg_Error_Type(id_type),
|
|
msg VARCHAR(4000) NOT NULL
|
|
);
|
|
|
|
|
|
-- Parse filters
|
|
SET v_has_filter_user = CASE WHEN a_id_user = '' THEN 0 ELSE 1 END;
|
|
|
|
|
|
-- User
|
|
IF v_has_filter_user THEN
|
|
INSERT INTO tmp_Shop_User (
|
|
id_user,
|
|
active
|
|
)
|
|
SELECT id_user,
|
|
active
|
|
FROM Shop_User
|
|
WHERE id_user LIKE CONCAT('%', a_id_user, '%')
|
|
AND active
|
|
LIMIT 1
|
|
;
|
|
|
|
IF NOT EXISTS (SELECT id_user FROM tmp_Shop_User LIMIT 1) THEN
|
|
INSERT INTO Shop_User (
|
|
id_user,
|
|
name,
|
|
email,
|
|
email_verified
|
|
)
|
|
VALUES (
|
|
a_id_user,
|
|
a_name,
|
|
a_email,
|
|
a_email_verified
|
|
);
|
|
|
|
INSERT INTO tmp_Shop_User (
|
|
id_user,
|
|
active
|
|
)
|
|
SELECT id_user,
|
|
active
|
|
FROM Shop_User
|
|
WHERE id_user LIKE CONCAT('%', a_id_user, '%')
|
|
AND active
|
|
LIMIT 1
|
|
;
|
|
END IF;
|
|
|
|
SET a_id_user := (SELECT id_user FROM tmp_Shop_User LIMIT 1);
|
|
ELSE
|
|
INSERT INTO tmp_Msg_Error (
|
|
id_type,
|
|
msg
|
|
)
|
|
VALUES (
|
|
(SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1),
|
|
'No user ID provided.'
|
|
)
|
|
;
|
|
END IF;
|
|
|
|
|
|
/*
|
|
IF NOT EXISTS (SELECT msg FROM tmp_Msg_Error LIMIT 1) THEN
|
|
END IF;
|
|
*/
|
|
|
|
|
|
-- Returns
|
|
# User
|
|
SELECT *
|
|
FROM tmp_Shop_User
|
|
;
|
|
|
|
# Errors
|
|
SELECT *
|
|
FROM tmp_Msg_Error
|
|
;
|
|
|
|
/*
|
|
# Return arguments for test
|
|
SELECT a_id_user,
|
|
a_name,
|
|
a_email,
|
|
a_email_verified
|
|
;
|
|
*/
|
|
|
|
-- Clean up
|
|
DROP TABLE IF EXISTS tmp_Msg_Error;
|
|
DROP TABLE IF EXISTS tmp_Shop_User;
|
|
END //
|
|
DELIMITER ;
|
|
|
|
|
|
|
|
/*
|
|
|
|
CALL p_shop_edit_user (
|
|
'',
|
|
'',
|
|
'',
|
|
0
|
|
)
|
|
|
|
*/
|