Adding foreign key attributes to SQL schema

- All floID based columns (floID, seller, buyer) are now foreign keys with reference to User.floID
- tag in Tags table is now referred to tag in TagList
- Indicate the error when adding user tags via API
This commit is contained in:
sairajzero 2021-12-05 00:40:49 +05:30
parent 9feef5bfe9
commit 1b6488bdd1
2 changed files with 28 additions and 12 deletions

View File

@ -12,21 +12,24 @@ floID CHAR(34) NOT NULL,
proxyKey CHAR(66) NOT NULL, proxyKey CHAR(66) NOT NULL,
session_id VARCHAR(100) UNIQUE, session_id VARCHAR(100) UNIQUE,
session_time DATETIME DEFAULT CURRENT_TIMESTAMP, session_time DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(floID) PRIMARY KEY(floID),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE Request_Log( CREATE TABLE Request_Log(
floID CHAR(34) NOT NULL, floID CHAR(34) NOT NULL,
request TEXT NOT NULL, request TEXT NOT NULL,
sign TEXT NOT NULL, sign TEXT NOT NULL,
request_time DATETIME DEFAULT CURRENT_TIMESTAMP request_time DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE Cash ( CREATE TABLE Cash (
id INT NOT NULL AUTO_INCREMENT, id INT NOT NULL AUTO_INCREMENT,
floID CHAR(34) NOT NULL UNIQUE, floID CHAR(34) NOT NULL UNIQUE,
rupeeBalance DECIMAL(12, 2) DEFAULT 0.00, rupeeBalance DECIMAL(12, 2) DEFAULT 0.00,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE Vault ( CREATE TABLE Vault (
@ -35,7 +38,8 @@ floID CHAR(34) NOT NULL,
locktime DATETIME DEFAULT CURRENT_TIMESTAMP, locktime DATETIME DEFAULT CURRENT_TIMESTAMP,
base DECIMAL(10, 2), base DECIMAL(10, 2),
quantity FLOAT NOT NULL, quantity FLOAT NOT NULL,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE SellOrder ( CREATE TABLE SellOrder (
@ -44,7 +48,8 @@ floID CHAR(34) NOT NULL,
quantity FLOAT NOT NULL, quantity FLOAT NOT NULL,
minPrice DECIMAL(10, 2), minPrice DECIMAL(10, 2),
time_placed DATETIME DEFAULT CURRENT_TIMESTAMP, time_placed DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE BuyOrder ( CREATE TABLE BuyOrder (
@ -53,7 +58,8 @@ floID CHAR(34) NOT NULL,
quantity FLOAT NOT NULL, quantity FLOAT NOT NULL,
maxPrice DECIMAL(10, 2) NOT NULL, maxPrice DECIMAL(10, 2) NOT NULL,
time_placed DATETIME DEFAULT CURRENT_TIMESTAMP, time_placed DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE Transactions ( CREATE TABLE Transactions (
@ -61,7 +67,9 @@ seller CHAR(34) NOT NULL,
buyer CHAR(34) NOT NULL, buyer CHAR(34) NOT NULL,
quantity FLOAT NOT NULL, quantity FLOAT NOT NULL,
unitValue DECIMAL(10, 2) NOT NULL, unitValue DECIMAL(10, 2) NOT NULL,
tx_time DATETIME DEFAULT CURRENT_TIMESTAMP tx_time DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (buyer) REFERENCES Users(floID),
FOREIGN KEY (seller) REFERENCES Users(floID)
); );
CREATE TABLE inputFLO ( CREATE TABLE inputFLO (
@ -70,7 +78,8 @@ txid VARCHAR(128) NOT NULL,
floID CHAR(34) NOT NULL, floID CHAR(34) NOT NULL,
amount FLOAT, amount FLOAT,
status VARCHAR(50) NOT NULL, status VARCHAR(50) NOT NULL,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE outputFLO ( CREATE TABLE outputFLO (
@ -79,7 +88,8 @@ txid VARCHAR(128),
floID CHAR(34) NOT NULL, floID CHAR(34) NOT NULL,
amount FLOAT NOT NULL, amount FLOAT NOT NULL,
status VARCHAR(50) NOT NULL, status VARCHAR(50) NOT NULL,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE inputRupee ( CREATE TABLE inputRupee (
@ -88,7 +98,8 @@ txid VARCHAR(128) NOT NULL,
floID CHAR(34) NOT NULL, floID CHAR(34) NOT NULL,
amount FLOAT, amount FLOAT,
status VARCHAR(50) NOT NULL, status VARCHAR(50) NOT NULL,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE outputRupee ( CREATE TABLE outputRupee (
@ -97,7 +108,8 @@ txid VARCHAR(128),
floID CHAR(34) NOT NULL, floID CHAR(34) NOT NULL,
amount FLOAT NOT NULL, amount FLOAT NOT NULL,
status VARCHAR(50) NOT NULL, status VARCHAR(50) NOT NULL,
PRIMARY KEY(id) PRIMARY KEY(id),
FOREIGN KEY (floID) REFERENCES Users(floID)
); );
CREATE TABLE TagList ( CREATE TABLE TagList (
@ -115,7 +127,9 @@ id INT NOT NULL AUTO_INCREMENT,
floID CHAR(34) NOT NULL, floID CHAR(34) NOT NULL,
tag VARCHAR(50) NOT NULL, tag VARCHAR(50) NOT NULL,
PRIMARY KEY(floID, tag), PRIMARY KEY(floID, tag),
KEY (id) KEY (id),
FOREIGN KEY (floID) REFERENCES Users(floID),
FOREIGN KEY (tag) REFERENCES TagList(tag)
); );
CREATE TABLE priceHistory ( CREATE TABLE priceHistory (

View File

@ -9,6 +9,8 @@ function addTag(floID, tag) {
.catch(error => { .catch(error => {
if (error.code === "ER_DUP_ENTRY") if (error.code === "ER_DUP_ENTRY")
reject(INVALID(`${floID} already in ${tag}`)); reject(INVALID(`${floID} already in ${tag}`));
else if (error.code === "ER_NO_REFERENCED_ROW")
reject(INVALID(`Invalid user-floID and/or Tag`));
else else
reject(error); reject(error);
}); });