different type of dbres error correction and mitigation
Former-commit-id: f888994e969a3b58fb748ddf00146609256021a7
This commit is contained in:
@@ -6,24 +6,24 @@ const PgFormat = require('pg-format');
|
||||
|
||||
async function Search(fuzzyStrings) {
|
||||
await Database.Query('BEGIN TRANSACTION;');
|
||||
let dbres;
|
||||
try {
|
||||
dbres = await Database.Query(PgFormat(`
|
||||
SELECT lego_set.id, lego_set.name, tag.name AS "tag", inv.price, inv.new_price AS "discount"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_tag AS tags ON tags.set_id = lego_set.id
|
||||
LEFT JOIN tag AS tag ON tags.tag = tag.id
|
||||
LEFT JOIN lego_set_inventory AS inv ON inv.set_id = lego_set.id
|
||||
WHERE lego_set.id ~* ANY(ARRAY[%L]) OR lego_set.name ~* ANY(ARRAY[%L]) OR tag.name ~* ANY(ARRAY[%L])
|
||||
`, fuzzyStrings, fuzzyStrings, fuzzyStrings), []);
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
} catch {
|
||||
await Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error('Database Error');
|
||||
const dbres = await Database.Query(PgFormat(`
|
||||
SELECT lego_set.id, lego_set.name, tag.name AS "tag", inv.price, inv.new_price AS "discount"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_tag AS tags ON tags.set_id = lego_set.id
|
||||
LEFT JOIN tag AS tag ON tags.tag = tag.id
|
||||
LEFT JOIN lego_set_inventory AS inv ON inv.set_id = lego_set.id
|
||||
WHERE lego_set.id ~* ANY(ARRAY[%L]) OR lego_set.name ~* ANY(ARRAY[%L]) OR tag.name ~* ANY(ARRAY[%L])
|
||||
`, fuzzyStrings, fuzzyStrings, fuzzyStrings), []).catch(() => {
|
||||
return {
|
||||
error: 'Database error',
|
||||
};
|
||||
});
|
||||
if (dbres.error) {
|
||||
Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error(dbres.error);
|
||||
return dbres;
|
||||
}
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
|
||||
// validate database response
|
||||
if (dbres.rows.length === 0) {
|
||||
@@ -84,22 +84,22 @@ async function Search(fuzzyStrings) {
|
||||
|
||||
async function SumPrices(setsArray, quantityArray) {
|
||||
await Database.Query('BEGIN TRANSACTION;');
|
||||
let dbres;
|
||||
try {
|
||||
dbres = await Database.Query(PgFormat(`
|
||||
SELECT COALESCE(new_price, price) AS "price"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_inventory AS set_inventory ON set_inventory.set_id = lego_set.id
|
||||
WHERE lego_set.id IN (%L);
|
||||
`, setsArray), []);
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
} catch {
|
||||
await Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error('Database Error');
|
||||
const dbres = await Database.Query(PgFormat(`
|
||||
SELECT COALESCE(new_price, price) AS "price"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_inventory AS set_inventory ON set_inventory.set_id = lego_set.id
|
||||
WHERE lego_set.id IN (%L);
|
||||
`, setsArray), []).catch(() => {
|
||||
return {
|
||||
error: 'Database error',
|
||||
};
|
||||
});
|
||||
if (dbres.error) {
|
||||
Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error(dbres.error);
|
||||
return dbres;
|
||||
}
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
|
||||
// validate database response
|
||||
if (dbres.rows.length === 0) {
|
||||
@@ -120,28 +120,28 @@ async function SumPrices(setsArray, quantityArray) {
|
||||
|
||||
async function GetSet(setId) {
|
||||
await Database.Query('BEGIN TRANSACTION;');
|
||||
let dbres;
|
||||
try {
|
||||
dbres = await Database.Query(`
|
||||
SELECT lego_set.id, lego_set.name, description, tag.name AS "tag",
|
||||
set_contents.brick_id, set_contents.amount, inv.price,
|
||||
date_released, weight, dimensions_x, dimensions_y, dimensions_z,
|
||||
new_price AS "discount", inv.stock, inv.last_updated AS "last_stock_update"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_inventory AS inv ON inv.set_id = lego_set.id
|
||||
LEFT JOIN lego_set_tag AS tags ON tags.set_id = lego_set.id
|
||||
LEFT JOIN tag AS tag ON tags.tag = tag.id
|
||||
LEFT JOIN set_descriptor AS set_contents ON set_contents.set_id = lego_set.id
|
||||
WHERE lego_set.id = $1;
|
||||
`, [setId]);
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
} catch {
|
||||
await Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error('Database Error');
|
||||
const dbres = await Database.Query(`
|
||||
SELECT lego_set.id, lego_set.name, description, tag.name AS "tag",
|
||||
set_contents.brick_id, set_contents.amount, inv.price,
|
||||
date_released, weight, dimensions_x, dimensions_y, dimensions_z,
|
||||
new_price AS "discount", inv.stock, inv.last_updated AS "last_stock_update"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_inventory AS inv ON inv.set_id = lego_set.id
|
||||
LEFT JOIN lego_set_tag AS tags ON tags.set_id = lego_set.id
|
||||
LEFT JOIN tag AS tag ON tags.tag = tag.id
|
||||
LEFT JOIN set_descriptor AS set_contents ON set_contents.set_id = lego_set.id
|
||||
WHERE lego_set.id = $1;
|
||||
`, [setId]).catch(() => {
|
||||
return {
|
||||
error: 'Database error',
|
||||
};
|
||||
});
|
||||
if (dbres.error) {
|
||||
Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error(dbres.error);
|
||||
return dbres;
|
||||
}
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
|
||||
// validate database response
|
||||
if (dbres.rows.length === 0) {
|
||||
@@ -171,29 +171,29 @@ async function GetSet(setId) {
|
||||
|
||||
async function GetSets(page, resPerPage) {
|
||||
await Database.Query('BEGIN TRANSACTION;');
|
||||
let countRes;
|
||||
let dbres;
|
||||
try {
|
||||
countRes = await Database.Query('SELECT COUNT (*) FROM lego_set;');
|
||||
dbres = await Database.Query(`
|
||||
const countRes = await Database.Query('SELECT COUNT (*) FROM lego_set;');
|
||||
const dbres = await Database.Query(`
|
||||
SELECT
|
||||
lego_set.id, lego_set.name, price, new_price AS "discount", tag.name AS "tag"
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_inventory as inv ON lego_set.id = inv.set_id
|
||||
LEFT JOIN lego_set_tag AS tags ON tags.set_id = lego_set.id
|
||||
LEFT JOIN tag AS tag ON tags.tag = tag.id
|
||||
ORDER BY id ASC
|
||||
LIMIT $1
|
||||
OFFSET $2;`,
|
||||
[resPerPage, page * resPerPage]);
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
} catch {
|
||||
await Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error('Database Error');
|
||||
FROM lego_set
|
||||
LEFT JOIN lego_set_inventory as inv ON lego_set.id = inv.set_id
|
||||
LEFT JOIN lego_set_tag AS tags ON tags.set_id = lego_set.id
|
||||
LEFT JOIN tag AS tag ON tags.tag = tag.id
|
||||
ORDER BY id ASC
|
||||
LIMIT $1
|
||||
OFFSET $2;`,
|
||||
[resPerPage, page * resPerPage]).catch(() => {
|
||||
return {
|
||||
error: 'Database error',
|
||||
};
|
||||
});
|
||||
if (dbres.error) {
|
||||
Database.Query('ROLLBACK TRANSACTION;');
|
||||
Logger.Error(dbres.error);
|
||||
return dbres;
|
||||
}
|
||||
await Database.Query('COMMIT TRANSACTION;');
|
||||
|
||||
const total = parseInt(countRes.rows[0].count);
|
||||
|
||||
// validate database response
|
||||
|
||||
Reference in New Issue
Block a user