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:
2024-07-05 20:34:11 +01:00
parent 3a2a164213
commit 6f4e329258
3049 changed files with 535753 additions and 3022 deletions

View 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
)
*/