1. PostgreSQL copy of all MySQL created and tested.\n 2. Purchase Orders and Sales Orders and stock level management added to MySQL, PostgreSQL, and server and front end code.
This commit is contained in:
166
static/PostgreSQL/610_p_shop_save_user.sql
Normal file
166
static/PostgreSQL/610_p_shop_save_user.sql
Normal file
@@ -0,0 +1,166 @@
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
CALL p_shop_save_user (
|
||||
'auth0|6582b95c895d09a70ba10fef', -- a_id_user
|
||||
'', -- a_name
|
||||
'', -- a_email
|
||||
0 -- a_email_verified
|
||||
)
|
||||
|
||||
*/
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE p_shop_save_user (
|
||||
IN a_id_user INTEGER,
|
||||
IN a_name VARCHAR(255),
|
||||
IN a_email VARCHAR(254),
|
||||
IN a_email_verified BIT
|
||||
)
|
||||
AS $$
|
||||
DECLARE
|
||||
v_id_user INTEGER;
|
||||
v_name VARCHAR(255);
|
||||
v_email VARCHAR(254);
|
||||
v_email_verified BIT;
|
||||
v_has_filter_user BOOLEAN;
|
||||
result_errors REFCURSOR;
|
||||
BEGIN
|
||||
v_id_user := TRIM(COALESCE(a_id_user, ''));
|
||||
v_name := TRIM(COALESCE(a_name, ''));
|
||||
v_email := TRIM(COALESCE(a_email, ''));
|
||||
v_email_verified := COALESCE(a_email_verified, FALSE);
|
||||
|
||||
v_has_filter_user = CASE WHEN v_id_user = '' THEN FALSE ELSE TRUE END;
|
||||
|
||||
-- Temporary tables
|
||||
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||
DROP TABLE IF EXISTS tmp_Shop_User;
|
||||
|
||||
CREATE TABLE tmp_Shop_User (
|
||||
id_user INTEGER,
|
||||
CONSTRAINT FK_tmp_Shop_User_id_user
|
||||
FOREIGN KEY (id_user)
|
||||
REFERENCES Shop_User(id_user),
|
||||
active BOOLEAN NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE tmp_Msg_Error (
|
||||
display_order INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
||||
id_type INTEGER 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
|
||||
|
||||
|
||||
-- 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 = v_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 (
|
||||
v_id_user,
|
||||
v_name,
|
||||
v_email,
|
||||
v_email_verified
|
||||
);
|
||||
|
||||
INSERT INTO tmp_Shop_User (
|
||||
id_user,
|
||||
active
|
||||
)
|
||||
SELECT id_user,
|
||||
active
|
||||
FROM Shop_User
|
||||
WHERE id_user = v_id_user
|
||||
AND active
|
||||
LIMIT 1
|
||||
;
|
||||
END IF;
|
||||
|
||||
v_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
|
||||
OPEN result_errors FOR
|
||||
SELECT *
|
||||
FROM tmp_Msg_Error
|
||||
;
|
||||
-- RETURN NEXT result_errors;
|
||||
|
||||
/*
|
||||
-- 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;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
CALL p_shop_save_user (
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
0
|
||||
)
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user