oops
This commit is contained in:
@@ -4,9 +4,10 @@ import Joi from 'joi';
|
|||||||
import j2s from "joi-to-swagger";
|
import j2s from "joi-to-swagger";
|
||||||
|
|
||||||
export class ApiError extends Error {
|
export class ApiError extends Error {
|
||||||
constructor(status, message) {
|
constructor(status, message, cause) {
|
||||||
super(message);
|
super(message);
|
||||||
this.status = status;
|
this.status = status;
|
||||||
|
this.cause = cause;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,9 +235,9 @@ router.post("/games", asyncHandler(async (req, res) => {
|
|||||||
|
|
||||||
await conn.commit();
|
await conn.commit();
|
||||||
res.status(201).json({ game: gameRow[0], players });
|
res.status(201).json({ game: gameRow[0], players });
|
||||||
} catch (_err) {
|
} catch (err) {
|
||||||
await conn.rollback();
|
await conn.rollback();
|
||||||
throw new ApiError(500, "Failed to create game");
|
throw new ApiError(500, "Failed to create game", err);
|
||||||
} finally {
|
} finally {
|
||||||
conn.release();
|
conn.release();
|
||||||
}
|
}
|
||||||
@@ -299,9 +300,9 @@ router.post("/games/:id/players", asyncHandler(async (req, res) => {
|
|||||||
|
|
||||||
await conn.commit();
|
await conn.commit();
|
||||||
res.status(201).json({ game: gameId, players });
|
res.status(201).json({ game: gameId, players });
|
||||||
} catch (_err) {
|
} catch (err) {
|
||||||
await conn.rollback();
|
await conn.rollback();
|
||||||
throw new ApiError(500, "Failed to add player");
|
throw new ApiError(500, "Failed to add player", err);
|
||||||
} finally {
|
} finally {
|
||||||
conn.release();
|
conn.release();
|
||||||
}
|
}
|
||||||
@@ -372,9 +373,9 @@ router.patch("/games/:id/lock", asyncHandler(async (req, res) => {
|
|||||||
|
|
||||||
await conn.commit();
|
await conn.commit();
|
||||||
res.json({ message: "Game locked", turnOrder });
|
res.json({ message: "Game locked", turnOrder });
|
||||||
} catch (_err) {
|
} catch (err) {
|
||||||
await conn.rollback();
|
await conn.rollback();
|
||||||
throw new ApiError(500, "Failed to lock game");
|
throw new ApiError(500, "Failed to lock game", err);
|
||||||
} finally {
|
} finally {
|
||||||
conn.release();
|
conn.release();
|
||||||
}
|
}
|
||||||
@@ -484,9 +485,9 @@ router.post("/games/:id/turns", asyncHandler(async (req, res) => {
|
|||||||
|
|
||||||
await conn.commit();
|
await conn.commit();
|
||||||
res.status(201).json({ turnId: result.insertId, nextPlayer });
|
res.status(201).json({ turnId: result.insertId, nextPlayer });
|
||||||
} catch (_err) {
|
} catch (err) {
|
||||||
await conn.rollback();
|
await conn.rollback();
|
||||||
throw new ApiError(500, "Failed to record turn");
|
throw new ApiError(500, "Failed to record turn", err);
|
||||||
} finally {
|
} finally {
|
||||||
conn.release();
|
conn.release();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,11 +48,14 @@ app.use("/api/docs", swaggerUi.serve, swaggerUi.setup(specs));
|
|||||||
app.use("/api", apiRouter);
|
app.use("/api", apiRouter);
|
||||||
|
|
||||||
app.use((err, req, res, next) => {
|
app.use((err, req, res, next) => {
|
||||||
console.error(err);
|
|
||||||
if (err instanceof ApiError) {
|
if (err instanceof ApiError) {
|
||||||
|
if (err.cause != null) {
|
||||||
|
console.error(err.cause);
|
||||||
|
}
|
||||||
return res.status(err.status).json({ status: "error", error: err.message });
|
return res.status(err.status).json({ status: "error", error: err.message });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.error(err);
|
||||||
res.status(500).json({ status: "error", error: "Internal server error" });
|
res.status(500).json({ status: "error", error: "Internal server error" });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user