Skip to content

Commit ab14986

Browse files
committed
adding guests schema
1 parent d17fed9 commit ab14986

File tree

8 files changed

+431
-3
lines changed

8 files changed

+431
-3
lines changed

src/migrations/customer/00003_orders_ddl.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ CREATE TABLE IF NOT EXISTS orders.header (
6161
PRIMARY KEY (id),
6262
FOREIGN KEY (order_status_id) REFERENCES orders.order_status(id),
6363
FOREIGN KEY (delivery_address_id) REFERENCES customer.address(id)
64-
);
64+
) AUTO_INCREMENT=1000000;
6565

6666
CREATE TABLE IF NOT EXISTS orders.item (
6767
id BIGINT AUTO_INCREMENT,
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
CREATE DATABASE IF NOT EXISTS guests;
2+
3+
CREATE TABLE IF NOT EXISTS guests.order_status (
4+
id TINYINT,
5+
status VARCHAR(100),
6+
PRIMARY KEY (id)
7+
);
8+
9+
CREATE TABLE IF NOT EXISTS guests.country (
10+
id TINYINT,
11+
country VARCHAR(100),
12+
PRIMARY KEY (id)
13+
);
14+
15+
CREATE TABLE IF NOT EXISTS guests.vat (
16+
country_id TINYINT,
17+
vat DECIMAL(5,2),
18+
PRIMARY KEY (country_id),
19+
FOREIGN KEY (country_id) REFERENCES guests.country(id)
20+
);
21+
22+
CREATE TABLE IF NOT EXISTS guests.delivery_cost (
23+
id TINYINT,
24+
cost DECIMAL(9,2),
25+
description VARCHAR(100),
26+
PRIMARY KEY (id)
27+
);
28+
29+
CREATE TABLE IF NOT EXISTS guests.address_type (
30+
id TINYINT,
31+
kind VARCHAR(100),
32+
PRIMARY KEY (id)
33+
);
34+
35+
CREATE TABLE IF NOT EXISTS guests.products (
36+
id MEDIUMINT,
37+
unit_price DECIMAL(11,2),
38+
quantity_in_stock DECIMAL(9,2),
39+
active BOOLEAN DEFAULT TRUE,
40+
created_on DATETIME DEFAULT CURRENT_TIMESTAMP,
41+
updated_on DATETIME ON UPDATE CURRENT_TIMESTAMP,
42+
PRIMARY KEY (id)
43+
);
44+
45+
-- Contains PII information
46+
CREATE TABLE IF NOT EXISTS guests.address (
47+
session_id BINARY(16),
48+
full_name VARCHAR(255) NOT NULL,
49+
address_type_id TINYINT NOT NULL,
50+
addr_1 VARCHAR(255) NOT NULL,
51+
addr_2 VARCHAR(255) DEFAULT NULL,
52+
city VARCHAR(255) NOT NULL,
53+
county VARCHAR(255) NOT NULL,
54+
country VARCHAR(100) NOT NULL,
55+
postcode VARCHAR(10) NOT NULL,
56+
active BOOLEAN DEFAULT TRUE,
57+
email VARCHAR(100) NOT NULL,
58+
phone_no VARCHAR(13) NOT NULL,
59+
PRIMARY KEY (session_id),
60+
FOREIGN KEY (address_type_id) REFERENCES guests.address_type(id)
61+
);
62+
63+
CREATE TABLE IF NOT EXISTS guests.header (
64+
id BIGINT AUTO_INCREMENT,
65+
session_id BINARY(16) NOT NULL,
66+
order_price DECIMAL(11,2),
67+
order_status_id TINYINT,
68+
charge_id VARCHAR(100),
69+
vat DECIMAL(11,2),
70+
delivery_cost DECIMAL(9,2),
71+
order_price_total DECIMAL(11,2),
72+
created_on DATETIME DEFAULT CURRENT_TIMESTAMP,
73+
updated_on DATETIME ON UPDATE CURRENT_TIMESTAMP,
74+
PRIMARY KEY (id),
75+
FOREIGN KEY (order_status_id) REFERENCES guests.order_status(id)
76+
) AUTO_INCREMENT=10000;
77+
78+
CREATE TABLE IF NOT EXISTS guests.item (
79+
id BIGINT AUTO_INCREMENT,
80+
order_id BIGINT NOT NULL,
81+
product_id MEDIUMINT,
82+
unit_price DECIMAL(11,2),
83+
quantity DECIMAL(9,2),
84+
total_price DECIMAL(11,2),
85+
item_vat DECIMAL(11,2),
86+
PRIMARY KEY (id),
87+
FOREIGN KEY (order_id) REFERENCES guests.header(id),
88+
FOREIGN KEY (product_id) REFERENCES guests.products(id)
89+
);
90+
91+
CREATE TABLE IF NOT EXISTS guests.cart_items (
92+
session_id BINARY(16),
93+
product_id MEDIUMINT,
94+
quantity DECIMAL(9,2),
95+
in_cart BOOLEAN DEFAULT TRUE,
96+
created_on DATETIME DEFAULT CURRENT_TIMESTAMP,
97+
updated_on DATETIME ON UPDATE CURRENT_TIMESTAMP,
98+
PRIMARY KEY (session_id, product_id)
99+
);

src/migrations/customer/00102_orders_seed.sql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,10 @@ INSERT INTO orders.products (id, unit_price) VALUES (43, 31.67);
5858
INSERT INTO orders.products (id, unit_price) VALUES (44, 25.60);
5959
INSERT INTO orders.products (id, unit_price) VALUES (45, 32.39);
6060
INSERT INTO orders.products (id, unit_price) VALUES (46, 32.39);
61-
INSERT INTO orders.products (id, unit_price) VALUES (47, 37.71);
62-
61+
INSERT INTO orders.products (id, unit_price) VALUES (47, 21.71);
62+
INSERT INTO orders.products (id, unit_price) VALUES (48, 17.71);
63+
INSERT INTO orders.products (id, unit_price) VALUES (49, 25.71);
64+
INSERT INTO orders.products (id, unit_price) VALUES (50, 25.71);
6365
INSERT INTO orders.products (id, unit_price) VALUES (51, 16499.00);
6466
INSERT INTO orders.products (id, unit_price) VALUES (52, 11999.00);
6567
INSERT INTO orders.products (id, unit_price) VALUES (53, 17900.00);
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
-- Address types
2+
INSERT INTO guests.address_type VALUES (1, 'Delivery');
3+
-- Order status types
4+
INSERT INTO guests.order_status VALUES (1, 'Incomplete');
5+
INSERT INTO guests.order_status VALUES (2, 'Payed');
6+
INSERT INTO guests.order_status VALUES (3, 'Delivered');
7+
INSERT INTO guests.order_status VALUES (4, 'Cancelled');
8+
INSERT INTO guests.order_status VALUES (5, 'Returned');
9+
-- Countries
10+
INSERT INTO guests.country VALUES (1, 'United Kingdom');
11+
-- Vat
12+
INSERT INTO guests.vat VALUES (1, 0.20);
13+
-- Delivery Cost
14+
INSERT INTO guests.delivery_cost VALUES (1, 0, "Standard delivery");
15+
INSERT INTO guests.delivery_cost VALUES (2, 50, "Next day delivery");
16+
-- Products
17+
INSERT INTO guests.products (id, unit_price) VALUES (1, 222.99);
18+
INSERT INTO guests.products (id, unit_price) VALUES (2, 219.00);
19+
INSERT INTO guests.products (id, unit_price) VALUES (3, 229.17);
20+
INSERT INTO guests.products (id, unit_price) VALUES (4, 79.00);
21+
INSERT INTO guests.products (id, unit_price) VALUES (5, 49.00);
22+
INSERT INTO guests.products (id, unit_price) VALUES (6, 253.00);
23+
INSERT INTO guests.products (id, unit_price) VALUES (7, 49.00);
24+
INSERT INTO guests.products (id, unit_price) VALUES (8, 269.41);
25+
INSERT INTO guests.products (id, unit_price) VALUES (9, 49.99);
26+
INSERT INTO guests.products (id, unit_price) VALUES (10, 14.00);
27+
INSERT INTO guests.products (id, unit_price) VALUES (11, 41990.00);
28+
INSERT INTO guests.products (id, unit_price) VALUES (12, 41990.00);
29+
INSERT INTO guests.products (id, unit_price) VALUES (13, 41990.00);
30+
INSERT INTO guests.products (id, unit_price) VALUES (14, 41990.00);
31+
INSERT INTO guests.products (id, unit_price) VALUES (15, 41990.00);
32+
INSERT INTO guests.products (id, unit_price) VALUES (16, 10990.00);
33+
INSERT INTO guests.products (id, unit_price) VALUES (17, 39990.00);
34+
INSERT INTO guests.products (id, unit_price) VALUES (18, 39990.00);
35+
INSERT INTO guests.products (id, unit_price) VALUES (19, 214990.00);
36+
INSERT INTO guests.products (id, unit_price) VALUES (20, 104990.00);
37+
INSERT INTO guests.products (id, unit_price) VALUES (21, 990.00);
38+
INSERT INTO guests.products (id, unit_price) VALUES (22, 790.00);
39+
INSERT INTO guests.products (id, unit_price) VALUES (23, 890.00);
40+
INSERT INTO guests.products (id, unit_price) VALUES (24, 890.00);
41+
INSERT INTO guests.products (id, unit_price) VALUES (25, 890.00);
42+
INSERT INTO guests.products (id, unit_price) VALUES (26, 999.00);
43+
INSERT INTO guests.products (id, unit_price) VALUES (27, 1999.00);
44+
INSERT INTO guests.products (id, unit_price) VALUES (28, 269.41);
45+
INSERT INTO guests.products (id, unit_price) VALUES (29, 269.41);
46+
INSERT INTO guests.products (id, unit_price) VALUES (30, 269.41);
47+
INSERT INTO guests.products (id, unit_price) VALUES (31, 16499.00);
48+
INSERT INTO guests.products (id, unit_price) VALUES (32, 6499.00);
49+
INSERT INTO guests.products (id, unit_price) VALUES (33, 1649.00);
50+
INSERT INTO guests.products (id, unit_price) VALUES (34, 1499.00);
51+
INSERT INTO guests.products (id, unit_price) VALUES (35, 1499.00);
52+
INSERT INTO guests.products (id, unit_price) VALUES (36, 5.99);
53+
INSERT INTO guests.products (id, unit_price) VALUES (37, 9.99);
54+
INSERT INTO guests.products (id, unit_price) VALUES (38, 2.99);
55+
INSERT INTO guests.products (id, unit_price) VALUES (39, 1.99);
56+
INSERT INTO guests.products (id, unit_price) VALUES (40, 14.82);
57+
INSERT INTO guests.products (id, unit_price) VALUES (41, 19.99);
58+
INSERT INTO guests.products (id, unit_price) VALUES (42, 19.99);
59+
INSERT INTO guests.products (id, unit_price) VALUES (43, 31.67);
60+
INSERT INTO guests.products (id, unit_price) VALUES (44, 25.60);
61+
INSERT INTO guests.products (id, unit_price) VALUES (45, 32.39);
62+
INSERT INTO guests.products (id, unit_price) VALUES (46, 32.39);
63+
INSERT INTO guests.products (id, unit_price) VALUES (47, 21.71);
64+
INSERT INTO guests.products (id, unit_price) VALUES (48, 17.71);
65+
INSERT INTO guests.products (id, unit_price) VALUES (49, 25.71);
66+
INSERT INTO guests.products (id, unit_price) VALUES (50, 25.71);
67+
INSERT INTO guests.products (id, unit_price) VALUES (51, 16499.00);
68+
INSERT INTO guests.products (id, unit_price) VALUES (52, 11999.00);
69+
INSERT INTO guests.products (id, unit_price) VALUES (53, 17900.00);
70+
INSERT INTO guests.products (id, unit_price) VALUES (54, 13290.00);
71+
INSERT INTO guests.products (id, unit_price) VALUES (55, 11999.00);
72+
INSERT INTO guests.products (id, unit_price) VALUES (56, 20000.00);
73+
INSERT INTO guests.products (id, unit_price) VALUES (57, 20000.00);
74+
INSERT INTO guests.products (id, unit_price) VALUES (58, 25000.00);
75+
INSERT INTO guests.products (id, unit_price) VALUES (59, 35000.00);
76+
INSERT INTO guests.products (id, unit_price) VALUES (60, 10000.00);
77+
INSERT INTO guests.products (id, unit_price) VALUES (61, 11000.00);
78+
INSERT INTO guests.products (id, unit_price) VALUES (62, 12000.00);
79+
INSERT INTO guests.products (id, unit_price) VALUES (63, 16300.00);
80+
INSERT INTO guests.products (id, unit_price) VALUES (64, 10300.00);
81+
INSERT INTO guests.products (id, unit_price) VALUES (65, 6300.00);
82+
INSERT INTO guests.products (id, unit_price) VALUES (66, 2000.00);
83+
INSERT INTO guests.products (id, unit_price) VALUES (67, 3000.00);
84+
INSERT INTO guests.products (id, unit_price) VALUES (68, 3000.00);
85+
INSERT INTO guests.products (id, unit_price) VALUES (69, 3900.00);
86+
INSERT INTO guests.products (id, unit_price) VALUES (70, 6600.00);
87+
INSERT INTO guests.products (id, unit_price) VALUES (71, 1000.00);
88+
INSERT INTO guests.products (id, unit_price) VALUES (72, 2000.00);
89+
INSERT INTO guests.products (id, unit_price) VALUES (73, 2000.00);
90+
INSERT INTO guests.products (id, unit_price) VALUES (74, 2670.00);
91+
INSERT INTO guests.products (id, unit_price) VALUES (75, 970.00);
92+
INSERT INTO guests.products (id, unit_price) VALUES (76, 870.00);
93+
INSERT INTO guests.products (id, unit_price) VALUES (77, 870.00);
94+
INSERT INTO guests.products (id, unit_price) VALUES (78, 570.00);
95+
INSERT INTO guests.products (id, unit_price) VALUES (79, 2570.00);
96+
INSERT INTO guests.products (id, unit_price) VALUES (80, 1370.00);
97+
INSERT INTO guests.products (id, unit_price) VALUES (81, 1370.00);
98+
INSERT INTO guests.products (id, unit_price) VALUES (82, 500.00);
99+
INSERT INTO guests.products (id, unit_price) VALUES (83, 999.00);
100+
INSERT INTO guests.products (id, unit_price) VALUES (84, 2199.00);
101+
INSERT INTO guests.products (id, unit_price) VALUES (85, 3000.00);
102+
INSERT INTO guests.products (id, unit_price) VALUES (86, 30.00);
103+
INSERT INTO guests.products (id, unit_price) VALUES (87, 35.00);
104+
INSERT INTO guests.products (id, unit_price) VALUES (88, 38.00);
105+
INSERT INTO guests.products (id, unit_price) VALUES (89, 28.00);
106+
INSERT INTO guests.products (id, unit_price) VALUES (90, 29.00);
107+
INSERT INTO guests.products (id, unit_price) VALUES (91, 29.00);
108+
INSERT INTO guests.products (id, unit_price) VALUES (92, 32.00);
109+
INSERT INTO guests.products (id, unit_price) VALUES (93, 32.00);
110+
INSERT INTO guests.products (id, unit_price) VALUES (94, 28.00);
111+
INSERT INTO guests.products (id, unit_price) VALUES (95, 29.00);
112+
INSERT INTO guests.products (id, unit_price) VALUES (96, 30.00);
113+
INSERT INTO guests.products (id, unit_price) VALUES (97, 31.00);
114+
INSERT INTO guests.products (id, unit_price) VALUES (98, 32.00);
115+
INSERT INTO guests.products (id, unit_price) VALUES (99, 33.00);
116+
INSERT INTO guests.products (id, unit_price) VALUES (100, 34.00);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
DROP PROCEDURE IF EXISTS guests.cancel_order;
2+
3+
DELIMITER $$
4+
5+
CREATE PROCEDURE guests.cancel_order ( IN in_session_id BINARY(16) , IN in_order_id BIGINT )
6+
BEGIN
7+
8+
DECLARE EXIT HANDLER FOR SQLEXCEPTION
9+
BEGIN
10+
ROLLBACK;
11+
END;
12+
13+
START TRANSACTION;
14+
15+
-- Cancelled order
16+
UPDATE guests.header
17+
SET order_status_id = 4 -- CANCELLED
18+
WHERE id = in_order_id
19+
AND session_id = in_session_id;
20+
21+
COMMIT;
22+
23+
SELECT TRUE;
24+
25+
END $$
26+
27+
DELIMITER ;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
DROP PROCEDURE IF EXISTS guests.confirm_order;
2+
3+
DELIMITER $$
4+
5+
CREATE PROCEDURE guests.confirm_order ( IN in_session_id BINARY(16) , IN in_order_id BIGINT, IN in_charge_id VARCHAR(100))
6+
BEGIN
7+
8+
DECLARE EXIT HANDLER FOR SQLEXCEPTION
9+
BEGIN
10+
ROLLBACK;
11+
END;
12+
13+
START TRANSACTION;
14+
15+
-- Update order
16+
UPDATE guests.header
17+
SET order_status_id = 2, -- PAYED
18+
charge_id = in_charge_id
19+
WHERE id = in_order_id
20+
AND session_id = in_session_id;
21+
22+
-- Deleting incomplete guests_create_order
23+
DELETE FROM guests.cart_items
24+
WHERE session_id = in_session_id
25+
AND in_cart = TRUE;
26+
27+
COMMIT;
28+
29+
CALL guests.get_order(in_session_id, in_order_id);
30+
31+
END $$
32+
33+
DELIMITER ;

0 commit comments

Comments
 (0)