diff --git a/args/schema.sql b/args/schema.sql index e9e9376..c970b8b 100644 --- a/args/schema.sql +++ b/args/schema.sql @@ -12,21 +12,24 @@ floID CHAR(34) NOT NULL, proxyKey CHAR(66) NOT NULL, session_id VARCHAR(100) UNIQUE, session_time DATETIME DEFAULT CURRENT_TIMESTAMP, -PRIMARY KEY(floID) +PRIMARY KEY(floID), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE Request_Log( floID CHAR(34) NOT NULL, request 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 ( id INT NOT NULL AUTO_INCREMENT, floID CHAR(34) NOT NULL UNIQUE, rupeeBalance DECIMAL(12, 2) DEFAULT 0.00, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE Vault ( @@ -35,7 +38,8 @@ floID CHAR(34) NOT NULL, locktime DATETIME DEFAULT CURRENT_TIMESTAMP, base DECIMAL(10, 2), quantity FLOAT NOT NULL, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE SellOrder ( @@ -44,7 +48,8 @@ floID CHAR(34) NOT NULL, quantity FLOAT NOT NULL, minPrice DECIMAL(10, 2), time_placed DATETIME DEFAULT CURRENT_TIMESTAMP, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE BuyOrder ( @@ -53,7 +58,8 @@ floID CHAR(34) NOT NULL, quantity FLOAT NOT NULL, maxPrice DECIMAL(10, 2) NOT NULL, time_placed DATETIME DEFAULT CURRENT_TIMESTAMP, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE Transactions ( @@ -61,7 +67,9 @@ seller CHAR(34) NOT NULL, buyer CHAR(34) NOT NULL, quantity FLOAT 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 ( @@ -70,7 +78,8 @@ txid VARCHAR(128) NOT NULL, floID CHAR(34) NOT NULL, amount FLOAT, status VARCHAR(50) NOT NULL, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE outputFLO ( @@ -79,7 +88,8 @@ txid VARCHAR(128), floID CHAR(34) NOT NULL, amount FLOAT NOT NULL, status VARCHAR(50) NOT NULL, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE inputRupee ( @@ -88,7 +98,8 @@ txid VARCHAR(128) NOT NULL, floID CHAR(34) NOT NULL, amount FLOAT, status VARCHAR(50) NOT NULL, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE outputRupee ( @@ -97,7 +108,8 @@ txid VARCHAR(128), floID CHAR(34) NOT NULL, amount FLOAT NOT NULL, status VARCHAR(50) NOT NULL, -PRIMARY KEY(id) +PRIMARY KEY(id), +FOREIGN KEY (floID) REFERENCES Users(floID) ); CREATE TABLE TagList ( @@ -115,7 +127,9 @@ id INT NOT NULL AUTO_INCREMENT, floID CHAR(34) NOT NULL, tag VARCHAR(50) NOT NULL, PRIMARY KEY(floID, tag), -KEY (id) +KEY (id), +FOREIGN KEY (floID) REFERENCES Users(floID), +FOREIGN KEY (tag) REFERENCES TagList(tag) ); CREATE TABLE priceHistory ( diff --git a/src/group.js b/src/group.js index 84c3dbb..03d402b 100644 --- a/src/group.js +++ b/src/group.js @@ -9,6 +9,8 @@ function addTag(floID, tag) { .catch(error => { if (error.code === "ER_DUP_ENTRY") reject(INVALID(`${floID} already in ${tag}`)); + else if (error.code === "ER_NO_REFERENCED_ROW") + reject(INVALID(`Invalid user-floID and/or Tag`)); else reject(error); });