1
0
mirror of https://github.com/matt-fidd/stratos.git synced 2026-01-01 20:39:28 +00:00

Catch database errors and prevent them from crashing the app

This commit is contained in:
2022-03-21 09:12:48 +00:00
parent 0298c81f51
commit e34016667f
4 changed files with 35 additions and 11 deletions

View File

@@ -98,11 +98,20 @@ class DatabaseConnectionPool {
const prepared = sql.includes('?');
let data;
if (!prepared) {
[ data ] = await this.#connectionPool.execute(sql);
} else {
[ data ] =
await this.#connectionPool.execute(sql, params);
try {
if (!prepared) {
[ data ] = await this.#connectionPool.execute(
sql
);
} else {
[ data ] = await this.#connectionPool.execute(
sql,
params
);
}
} catch (e) {
console.error(e);
data = [];
}
return data;

View File

@@ -72,9 +72,7 @@ class PasswordReset {
where userId = ?;
`;
await conn.runQuery(sql, [ u.id ]);
conn.close();
let result = await conn.runQuery(sql, [ u.id ]);
const [ nonce, token ] = await PasswordReset.hashToken(u);
@@ -93,13 +91,18 @@ class PasswordReset {
values (?, ?, ?, FROM_UNIXTIME(?));
`;
await conn.runQuery(sql, [
result = await conn.runQuery(sql, [
u.id,
token,
nonce,
expires
]);
if (!result)
throw new Error('Could not create password reset');
conn.close();
return new PasswordReset(u.id, token);
}
}

View File

@@ -99,13 +99,18 @@ class TestTemplate {
const conn = await new DatabaseConnectionPool();
await conn.runQuery(sql, [
const result = await conn.runQuery(sql, [
id,
this.id,
c.id,
epochDate
]);
conn.close();
if (!result.length)
throw new Error('Could not assign class');
return new Test(id);
}
@@ -130,13 +135,18 @@ class TestTemplate {
(?, ?, ?, ?);
`;
await conn.runQuery(sql, [
const result = await conn.runQuery(sql, [
id,
a.id,
name,
maxMark
]);
conn.close();
if (!result)
throw new Error('Could not create test template');
return new TestTemplate(id);
}
}

View File

@@ -94,6 +94,8 @@ class User {
return new (require(`./${className}`))(this.id);
}
throw new Error('No user found');
})();
}