mirror of
https://github.com/matt-fidd/stratos.git
synced 2026-01-01 18:19:25 +00:00
Catch database errors and prevent them from crashing the app
This commit is contained in:
@@ -98,11 +98,20 @@ class DatabaseConnectionPool {
|
|||||||
const prepared = sql.includes('?');
|
const prepared = sql.includes('?');
|
||||||
|
|
||||||
let data;
|
let data;
|
||||||
if (!prepared) {
|
try {
|
||||||
[ data ] = await this.#connectionPool.execute(sql);
|
if (!prepared) {
|
||||||
} else {
|
[ data ] = await this.#connectionPool.execute(
|
||||||
[ data ] =
|
sql
|
||||||
await this.#connectionPool.execute(sql, params);
|
);
|
||||||
|
} else {
|
||||||
|
[ data ] = await this.#connectionPool.execute(
|
||||||
|
sql,
|
||||||
|
params
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
data = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
|
|||||||
@@ -72,9 +72,7 @@ class PasswordReset {
|
|||||||
where userId = ?;
|
where userId = ?;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
await conn.runQuery(sql, [ u.id ]);
|
let result = await conn.runQuery(sql, [ u.id ]);
|
||||||
|
|
||||||
conn.close();
|
|
||||||
|
|
||||||
const [ nonce, token ] = await PasswordReset.hashToken(u);
|
const [ nonce, token ] = await PasswordReset.hashToken(u);
|
||||||
|
|
||||||
@@ -93,13 +91,18 @@ class PasswordReset {
|
|||||||
values (?, ?, ?, FROM_UNIXTIME(?));
|
values (?, ?, ?, FROM_UNIXTIME(?));
|
||||||
`;
|
`;
|
||||||
|
|
||||||
await conn.runQuery(sql, [
|
result = await conn.runQuery(sql, [
|
||||||
u.id,
|
u.id,
|
||||||
token,
|
token,
|
||||||
nonce,
|
nonce,
|
||||||
expires
|
expires
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
throw new Error('Could not create password reset');
|
||||||
|
|
||||||
|
conn.close();
|
||||||
|
|
||||||
return new PasswordReset(u.id, token);
|
return new PasswordReset(u.id, token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,13 +99,18 @@ class TestTemplate {
|
|||||||
|
|
||||||
const conn = await new DatabaseConnectionPool();
|
const conn = await new DatabaseConnectionPool();
|
||||||
|
|
||||||
await conn.runQuery(sql, [
|
const result = await conn.runQuery(sql, [
|
||||||
id,
|
id,
|
||||||
this.id,
|
this.id,
|
||||||
c.id,
|
c.id,
|
||||||
epochDate
|
epochDate
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
conn.close();
|
||||||
|
|
||||||
|
if (!result.length)
|
||||||
|
throw new Error('Could not assign class');
|
||||||
|
|
||||||
return new Test(id);
|
return new Test(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,13 +135,18 @@ class TestTemplate {
|
|||||||
(?, ?, ?, ?);
|
(?, ?, ?, ?);
|
||||||
`;
|
`;
|
||||||
|
|
||||||
await conn.runQuery(sql, [
|
const result = await conn.runQuery(sql, [
|
||||||
id,
|
id,
|
||||||
a.id,
|
a.id,
|
||||||
name,
|
name,
|
||||||
maxMark
|
maxMark
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
conn.close();
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
throw new Error('Could not create test template');
|
||||||
|
|
||||||
return new TestTemplate(id);
|
return new TestTemplate(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,8 @@ class User {
|
|||||||
|
|
||||||
return new (require(`./${className}`))(this.id);
|
return new (require(`./${className}`))(this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
throw new Error('No user found');
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user