1
0
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:
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('?'); 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;

View File

@@ -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);
} }
} }

View File

@@ -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);
} }
} }

View File

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