Minor fixes
- Sell requirement checks for respective asset for minimum buy - Minimum buy is set to 0 (for exchange startup) - Fixed: buy/sell orders sorted incorrectly by time_placed (should be FCFS. ie, ASC)
This commit is contained in:
parent
af7d4c625d
commit
53b47057ff
@ -8,7 +8,7 @@ module.exports = {
|
|||||||
INVALID_SERVER_MSG: "INCORRECT_SERVER_ERROR" //Should be reflected in public backend script
|
INVALID_SERVER_MSG: "INCORRECT_SERVER_ERROR" //Should be reflected in public backend script
|
||||||
},
|
},
|
||||||
market: {
|
market: {
|
||||||
MINIMUM_BUY_REQUIREMENT: 0.1
|
MINIMUM_BUY_REQUIREMENT: 0
|
||||||
},
|
},
|
||||||
price: {
|
price: {
|
||||||
MIN_TIME: 1 * 60 * 60 * 1000, // 1 hr
|
MIN_TIME: 1 * 60 * 60 * 1000, // 1 hr
|
||||||
|
|||||||
13
src/group.js
13
src/group.js
@ -208,7 +208,7 @@ function getUntaggedSellOrders(asset, cur_price) {
|
|||||||
DB.query("SELECT SellOrder.id, SellOrder.floID, SellOrder.quantity FROM SellOrder" +
|
DB.query("SELECT SellOrder.id, SellOrder.floID, SellOrder.quantity FROM SellOrder" +
|
||||||
" LEFT JOIN UserTag ON UserTag.floID = SellOrder.floID" +
|
" LEFT JOIN UserTag ON UserTag.floID = SellOrder.floID" +
|
||||||
" WHERE UserTag.floID IS NULL AND SellOrder.asset = ? AND SellOrder.minPrice <=?" +
|
" WHERE UserTag.floID IS NULL AND SellOrder.asset = ? AND SellOrder.minPrice <=?" +
|
||||||
" ORDER BY SellOrder.time_placed DESC", [asset, cur_price])
|
" ORDER BY SellOrder.time_placed", [asset, cur_price])
|
||||||
.then(orders => resolve(orders))
|
.then(orders => resolve(orders))
|
||||||
.catch(error => reject(error))
|
.catch(error => reject(error))
|
||||||
})
|
})
|
||||||
@ -219,7 +219,7 @@ function getUntaggedBuyOrders(asset, cur_price) {
|
|||||||
DB.query("SELECT BuyOrder.id, BuyOrder.floID, BuyOrder.quantity FROM BuyOrder" +
|
DB.query("SELECT BuyOrder.id, BuyOrder.floID, BuyOrder.quantity FROM BuyOrder" +
|
||||||
" LEFT JOIN UserTag ON UserTag.floID = BuyOrder.floID" +
|
" LEFT JOIN UserTag ON UserTag.floID = BuyOrder.floID" +
|
||||||
" WHERE UserTag.floID IS NULL AND BuyOrder.asset = ? AND BuyOrder.maxPrice >=? " +
|
" WHERE UserTag.floID IS NULL AND BuyOrder.asset = ? AND BuyOrder.maxPrice >=? " +
|
||||||
" ORDER BY BuyOrder.time_placed DESC", [asset, cur_price])
|
" ORDER BY BuyOrder.time_placed", [asset, cur_price])
|
||||||
.then(orders => resolve(orders))
|
.then(orders => resolve(orders))
|
||||||
.catch(error => reject(error))
|
.catch(error => reject(error))
|
||||||
})
|
})
|
||||||
@ -230,7 +230,7 @@ function getSellOrdersInTag(tag, asset, cur_price) {
|
|||||||
DB.query("SELECT SellOrder.id, SellOrder.floID, SellOrder.quantity FROM SellOrder" +
|
DB.query("SELECT SellOrder.id, SellOrder.floID, SellOrder.quantity FROM SellOrder" +
|
||||||
" INNER JOIN UserTag ON UserTag.floID = SellOrder.floID" +
|
" INNER JOIN UserTag ON UserTag.floID = SellOrder.floID" +
|
||||||
" WHERE UserTag.tag = ? AND SellOrder.asset = ? AND SellOrder.minPrice <=?" +
|
" WHERE UserTag.tag = ? AND SellOrder.asset = ? AND SellOrder.minPrice <=?" +
|
||||||
" ORDER BY SellOrder.time_placed DESC", [tag, asset, cur_price]).then(orders => {
|
" ORDER BY SellOrder.time_placed", [tag, asset, cur_price]).then(orders => {
|
||||||
if (orders.length <= 1) // No (or) Only-one order, hence priority sort not required.
|
if (orders.length <= 1) // No (or) Only-one order, hence priority sort not required.
|
||||||
resolve(orders);
|
resolve(orders);
|
||||||
else
|
else
|
||||||
@ -249,7 +249,7 @@ function getBuyOrdersInTag(tag, asset, cur_price) {
|
|||||||
DB.query("SELECT BuyOrder.id, BuyOrder.floID, BuyOrder.quantity FROM BuyOrder" +
|
DB.query("SELECT BuyOrder.id, BuyOrder.floID, BuyOrder.quantity FROM BuyOrder" +
|
||||||
" INNER JOIN UserTag ON UserTag.floID = BuyOrder.floID" +
|
" INNER JOIN UserTag ON UserTag.floID = BuyOrder.floID" +
|
||||||
" WHERE UserTag.tag = ? AND BuyOrder.asset = ? AND BuyOrder.maxPrice >=?" +
|
" WHERE UserTag.tag = ? AND BuyOrder.asset = ? AND BuyOrder.maxPrice >=?" +
|
||||||
" ORDER BY BuyOrder.time_placed DESC", [tag, asset, cur_price]).then(orders => {
|
" ORDER BY BuyOrder.time_placed", [tag, asset, cur_price]).then(orders => {
|
||||||
if (orders.length <= 1) // No (or) Only-one order, hence priority sort not required.
|
if (orders.length <= 1) // No (or) Only-one order, hence priority sort not required.
|
||||||
resolve(orders);
|
resolve(orders);
|
||||||
else
|
else
|
||||||
@ -271,10 +271,9 @@ function getPointsFromAPI(tag, floIDs) {
|
|||||||
Promise.allSettled(floIDs.map(id => fetch_api(api, id))).then(result => {
|
Promise.allSettled(floIDs.map(id => fetch_api(api, id))).then(result => {
|
||||||
let points = {};
|
let points = {};
|
||||||
for (let i in result)
|
for (let i in result)
|
||||||
if (result[i].status === "fulfilled")
|
points[floIDs[i]] = result[i].status === "fulfilled" ? result[i].value : 0;
|
||||||
points[floIDs[i]] = result[i].value;
|
|
||||||
resolve(points);
|
resolve(points);
|
||||||
}).catch(error => reject(error))
|
})
|
||||||
}).catch(error => reject(error))
|
}).catch(error => reject(error))
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,7 +69,7 @@ function addSellOrder(floID, asset, quantity, min_price) {
|
|||||||
else if (!assetList.includes(asset))
|
else if (!assetList.includes(asset))
|
||||||
return reject(INVALID(`Invalid asset (${asset})`));
|
return reject(INVALID(`Invalid asset (${asset})`));
|
||||||
getAssetBalance.check(floID, asset, quantity).then(_ => {
|
getAssetBalance.check(floID, asset, quantity).then(_ => {
|
||||||
checkSellRequirement(floID).then(_ => {
|
checkSellRequirement(floID, asset).then(_ => {
|
||||||
DB.query("INSERT INTO SellOrder(floID, asset, quantity, minPrice) VALUES (?, ?, ?, ?)", [floID, asset, quantity, min_price])
|
DB.query("INSERT INTO SellOrder(floID, asset, quantity, minPrice) VALUES (?, ?, ?, ?)", [floID, asset, quantity, min_price])
|
||||||
.then(result => resolve("Added SellOrder to DB"))
|
.then(result => resolve("Added SellOrder to DB"))
|
||||||
.catch(error => reject(error));
|
.catch(error => reject(error));
|
||||||
@ -78,16 +78,16 @@ function addSellOrder(floID, asset, quantity, min_price) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const checkSellRequirement = floID => new Promise((resolve, reject) => {
|
const checkSellRequirement = (floID, asset) => new Promise((resolve, reject) => {
|
||||||
DB.query("SELECT * FROM UserTag WHERE floID=? AND tag=?", [floID, "MINER"]).then(result => {
|
DB.query("SELECT * FROM UserTag WHERE floID=? AND tag=?", [floID, "MINER"]).then(result => {
|
||||||
if (result.length)
|
if (result.length)
|
||||||
return resolve(true);
|
return resolve(true);
|
||||||
//TODO: Should seller need to buy same type of asset before selling?
|
//TODO: Should seller need to buy same type of asset before selling?
|
||||||
DB.query("SELECT SUM(quantity) AS brought FROM TransactionHistory WHERE buyer=?", [floID]).then(result => {
|
DB.query("SELECT SUM(quantity) AS brought FROM TransactionHistory WHERE buyer=? AND asset=?", [floID, asset]).then(result => {
|
||||||
if (result[0].brought >= MINIMUM_BUY_REQUIREMENT)
|
if (result[0].brought >= MINIMUM_BUY_REQUIREMENT)
|
||||||
resolve(true);
|
resolve(true);
|
||||||
else
|
else
|
||||||
reject(INVALID(`Sellers required to buy atleast ${MINIMUM_BUY_REQUIREMENT} FLO before placing a sell order unless they are a Miner`));
|
reject(INVALID(`Sellers required to buy atleast ${MINIMUM_BUY_REQUIREMENT} ${asset} before placing a sell order unless they are a Miner`));
|
||||||
}).catch(error => reject(error))
|
}).catch(error => reject(error))
|
||||||
}).catch(error => reject(error))
|
}).catch(error => reject(error))
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user