Skip to content
This repository was archived by the owner on Jul 20, 2026. It is now read-only.

Commit 72e06e9

Browse files
Merge branch 'dev' into feature-home-404-account
2 parents 2d444b5 + f1ceaad commit 72e06e9

5 files changed

Lines changed: 260 additions & 2 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
-- V1_0_0__primary_tables.sql
2+
-- Creates the main tables for the database
3+
4+
-- ROLLBACK: DROP TABLE IF EXISTS name;
5+
CREATE TABLE account (
6+
id INT PRIMARY KEY AUTO_INCREMENT,
7+
first_name VARCHAR(128) NOT NULL,
8+
last_name VARCHAR(128) NOT NULL,
9+
email VARCHAR(255) UNIQUE NOT NULL,
10+
phone VARCHAR(32) UNIQUE,
11+
password VARCHAR(255) NOT NULL,
12+
date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
13+
);
14+
15+
CREATE TABLE role (
16+
id INT PRIMARY KEY AUTO_INCREMENT,
17+
name VARCHAR(64) NOT NULL
18+
);
19+
20+
CREATE TABLE payment (
21+
id INT PRIMARY KEY AUTO_INCREMENT,
22+
date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
23+
);
24+
25+
CREATE TABLE payment_mode (
26+
id INT PRIMARY KEY AUTO_INCREMENT,
27+
name VARCHAR(64) NOT NULL UNIQUE
28+
);
29+
30+
CREATE TABLE payment_status (
31+
id INT PRIMARY KEY AUTO_INCREMENT,
32+
name VARCHAR(64) NOT NULL UNIQUE
33+
);
34+
35+
CREATE TABLE invoice (
36+
id INT PRIMARY KEY AUTO_INCREMENT,
37+
date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
38+
total DECIMAL(12, 2) NOT NULL
39+
);
40+
41+
CREATE TABLE invoice_status (
42+
id INT PRIMARY KEY AUTO_INCREMENT,
43+
name VARCHAR(64) NOT NULL UNIQUE
44+
);
45+
46+
CREATE TABLE invoice_line (
47+
id INT PRIMARY KEY AUTO_INCREMENT,
48+
unit_price DECIMAL(10, 2) NOT NULL,
49+
quantity INT NOT NULL DEFAULT 1
50+
);
51+
52+
CREATE TABLE product (
53+
id INT PRIMARY KEY AUTO_INCREMENT,
54+
name VARCHAR(128) NOT NULL,
55+
description VARCHAR(255),
56+
price DECIMAL(10, 2) NOT NULL
57+
);
58+
59+
CREATE TABLE supplier (
60+
id INT PRIMARY KEY AUTO_INCREMENT,
61+
name VARCHAR(128) NOT NULL,
62+
email VARCHAR(255),
63+
phone VARCHAR(32)
64+
);
65+
66+
CREATE TABLE product_category (
67+
id INT PRIMARY KEY AUTO_INCREMENT,
68+
name VARCHAR(128) NOT NULL UNIQUE
69+
);
70+
71+
CREATE TABLE stock (
72+
id INT PRIMARY KEY AUTO_INCREMENT,
73+
quantity_available INT NOT NULL DEFAULT 0,
74+
quantity_reserved INT NOT NULL DEFAULT 0,
75+
reorder_threshold INT NOT NULL DEFAULT 0,
76+
last_update DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
77+
);
78+
79+
CREATE TABLE menu (
80+
id INT PRIMARY KEY AUTO_INCREMENT,
81+
name VARCHAR(128) NOT NULL,
82+
description VARCHAR(255),
83+
price_rate DECIMAL(6, 4) NOT NULL DEFAULT 1.0000
84+
);
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
-- V1_0_1__enum_values_insertion.sql
2+
-- Populates the DB with simple values for tables payment_mode,
3+
-- payment_status, role and invoice_status
4+
5+
-- ROLLBACK: DELETE FROM table_name WHERE attrib IN (list_of_values);
6+
INSERT INTO payment_mode (name)
7+
VALUES
8+
('unknown'),
9+
('credit_card'),
10+
('bank_note'),
11+
('cash'),
12+
('meal_voucher'),
13+
('paypal')
14+
ON DUPLICATE KEY UPDATE name = name;
15+
16+
INSERT INTO payment_status (name)
17+
VALUES
18+
('pending'),
19+
('paid'),
20+
('failed'),
21+
('refunded')
22+
ON DUPLICATE KEY UPDATE name = name;
23+
24+
INSERT INTO role (name)
25+
VALUES
26+
('client'),
27+
('supplier'),
28+
('admin')
29+
ON DUPLICATE KEY UPDATE name = name;
30+
31+
INSERT INTO invoice_status (name)
32+
VALUES
33+
('draft'),
34+
('pending'),
35+
('paid'),
36+
('cancelled')
37+
ON DUPLICATE KEY UPDATE name = name;
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
-- V1_0_2__linking_primary_tables.sql
2+
-- Adds foreign keys as well as "join" tables and constraints
3+
-- especially when deleting a value
4+
5+
-- Adding constraints onto account
6+
ALTER TABLE account
7+
ADD COLUMN role_id INT DEFAULT 1; -- By default, a new user is seen as a client
8+
9+
ALTER TABLE account
10+
ADD CONSTRAINT fk_account_role
11+
FOREIGN KEY (role_id) REFERENCES role(id)
12+
ON DELETE SET NULL
13+
ON UPDATE CASCADE;
14+
15+
-- Adding constraints onto invoice
16+
ALTER TABLE invoice
17+
ADD COLUMN account_id INT; -- We keep invoices even if the client deleted their account
18+
19+
ALTER TABLE invoice
20+
ADD CONSTRAINT fk_invoice_account
21+
FOREIGN KEY (account_id) REFERENCES account(id)
22+
ON DELETE SET NULL
23+
ON UPDATE CASCADE;
24+
25+
ALTER TABLE invoice
26+
ADD COLUMN payment_id INT;
27+
28+
ALTER TABLE invoice
29+
ADD CONSTRAINT fk_invoice_payment
30+
FOREIGN KEY (payment_id) REFERENCES payment(id)
31+
ON DELETE SET NULL
32+
ON UPDATE CASCADE;
33+
34+
ALTER TABLE invoice
35+
ADD COLUMN status_id INT NOT NULL;
36+
37+
ALTER TABLE invoice
38+
ADD CONSTRAINT fk_invoice_status
39+
FOREIGN KEY (status_id) REFERENCES invoice_status(id)
40+
ON DELETE RESTRICT
41+
ON UPDATE CASCADE;
42+
43+
-- Adding constraints onto payment
44+
ALTER TABLE payment
45+
ADD COLUMN mode_id INT NOT NULL;
46+
47+
ALTER TABLE payment
48+
ADD CONSTRAINT fk_payment_mode
49+
FOREIGN KEY (mode_id) REFERENCES payment_mode(id)
50+
ON DELETE RESTRICT
51+
ON UPDATE CASCADE;
52+
53+
ALTER TABLE payment
54+
ADD COLUMN status_id INT NOT NULL;
55+
56+
ALTER TABLE payment
57+
ADD CONSTRAINT fk_payment_status
58+
FOREIGN KEY (status_id) REFERENCES payment_status(id)
59+
ON DELETE RESTRICT
60+
ON UPDATE CASCADE;
61+
62+
-- Adding constraints onto invoice_line
63+
ALTER TABLE invoice_line
64+
ADD COLUMN invoice_id INT NOT NULL;
65+
66+
ALTER TABLE invoice_line
67+
ADD CONSTRAINT fk_invoice_line_invoice
68+
FOREIGN KEY (invoice_id) REFERENCES invoice(id)
69+
ON DELETE CASCADE
70+
ON UPDATE CASCADE;
71+
72+
ALTER TABLE invoice_line
73+
ADD COLUMN product_id INT;
74+
75+
ALTER TABLE invoice_line
76+
ADD CONSTRAINT fk_invoice_line_product
77+
FOREIGN KEY (product_id) REFERENCES product(id)
78+
ON DELETE SET NULL
79+
ON UPDATE CASCADE;
80+
81+
-- Adding constraints onto product
82+
ALTER TABLE product
83+
ADD COLUMN supplier_id INT; -- Can be supplied by themselves (NULL)
84+
85+
ALTER TABLE product
86+
ADD CONSTRAINT fk_product_supplier
87+
FOREIGN KEY (supplier_id) REFERENCES supplier(id)
88+
ON DELETE SET NULL
89+
ON UPDATE CASCADE;
90+
91+
-- Adding "join" table between product and category
92+
CREATE TABLE product_to_category (
93+
product_id INT NOT NULL,
94+
category_id INT NOT NULL,
95+
PRIMARY KEY (product_id, category_id),
96+
FOREIGN KEY (product_id) REFERENCES product(id)
97+
ON DELETE CASCADE
98+
ON UPDATE CASCADE,
99+
FOREIGN KEY (category_id) REFERENCES product_category(id)
100+
ON DELETE CASCADE
101+
ON UPDATE CASCADE
102+
);
103+
104+
-- Adding "join" table between menu and product
105+
CREATE TABLE menu_product (
106+
menu_id INT NOT NULL,
107+
product_id INT NOT NULL,
108+
PRIMARY KEY (menu_id, product_id),
109+
FOREIGN KEY (menu_id) REFERENCES menu(id)
110+
ON DELETE CASCADE
111+
ON UPDATE CASCADE,
112+
FOREIGN KEY (product_id) REFERENCES product(id)
113+
ON DELETE CASCADE
114+
ON UPDATE CASCADE
115+
);
116+
117+
-- Adding constraints onto stock
118+
ALTER TABLE stock
119+
ADD COLUMN product_id INT NOT NULL;
120+
121+
ALTER TABLE stock
122+
ADD CONSTRAINT fk_stock_product
123+
FOREIGN KEY (product_id) REFERENCES product(id)
124+
ON DELETE CASCADE
125+
ON UPDATE CASCADE;

manage.ps1

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[CmdletBinding(DefaultParameterSetName='Action')]
44
param(
55
[Parameter(Mandatory=$false, Position=0, ParameterSetName='Action')]
6-
[ValidateSet('start','stop','destroy','build','force-build','backup','migrate')]
6+
[ValidateSet('start','stop','destroy','build','force-build','backup','migrate','repair')]
77
[string]$Action,
88

99
[Parameter(Mandatory=$false, ParameterSetName='Help')]
@@ -26,6 +26,7 @@ Available actions:
2626
force-build Build services images without using the cache
2727
backup Back the database up in a .sql file
2828
migrate Migrate the current database to a newer schema version
29+
repair Repair the Flyway table
2930
3031
Options:
3132
-Help Displays some help
@@ -128,6 +129,10 @@ switch ($Action) {
128129
Write-Color Green "Migrations are being applied..."
129130
docker-compose run --rm flyway
130131
}
132+
'repair' {
133+
Write-Color Green "Repairing Flyway table"
134+
docker-compose run --rm flyway repair
135+
}
131136
default {
132137
Write-Color Red "Unknown argument. Please use -Help for more info."
133138
exit 1

manage.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Available actions:
3131
force-build Build services images without using the cache
3232
backup Back the database up in a .sql file
3333
migrate Migrate the current database to a newer schema version
34+
repair Repair the Flyway table
3435
3536
Options:
3637
-h, --help Displays this help
@@ -142,6 +143,11 @@ do_migrate() {
142143
$COMPOSE_CMD run --rm flyway
143144
}
144145

146+
do_repair() {
147+
color_echo "$GREEN" "Repairing Flyway table"
148+
$COMPOSE_CMD run --rm flyway repair
149+
}
150+
145151
# ------------------------------------------------------------
146152
# Main script logic
147153
# ------------------------------------------------------------
@@ -162,7 +168,7 @@ main() {
162168

163169
# Validate action
164170
case "$action" in
165-
start|stop|destroy|build|force-build|backup|migrate)
171+
start|stop|destroy|build|force-build|backup|migrate|repair)
166172
;;
167173
*)
168174
color_echo "$RED" "Unknown action '$action'. Use -h or --help for usage."
@@ -184,6 +190,7 @@ main() {
184190
force-build) do_force_build ;;
185191
backup) do_backup ;;
186192
migrate) do_migrate ;;
193+
repair) do_repair ;;
187194
esac
188195
}
189196

0 commit comments

Comments
 (0)