Added a better error handling
This commit is contained in:
parent
f6f4a249c1
commit
18efd445e5
19
errors/DefaultError.js
Normal file
19
errors/DefaultError.js
Normal file
@ -0,0 +1,19 @@
|
||||
class DefaultError extends Error {
|
||||
constructor(code, message, cause, name) {
|
||||
super(message)
|
||||
this.code = code
|
||||
this.name = name || "DefaultError"
|
||||
this.cause = cause || "Internal Server Error"
|
||||
this.message = message || "Internal Server Error"
|
||||
this.isOperational = true
|
||||
}
|
||||
|
||||
serialize() {
|
||||
return {
|
||||
code: this.code,
|
||||
message: this.message
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = DefaultError
|
||||
@ -2,10 +2,18 @@ const express = require("express")
|
||||
const router = express.Router()
|
||||
const registerService = require("../services/register")
|
||||
|
||||
router.post("/", async (req, res) => {
|
||||
const { email, username, password } = req.body
|
||||
const registerResult = registerService.register({ email, username, password })
|
||||
return res.status(registerResult.code).json(registerResult)
|
||||
router.post("/", async (req, res, next) => {
|
||||
try {
|
||||
const { email, username, password } = req.body
|
||||
const registerResult = registerService.register({ email, username, password })
|
||||
return res.status(200).json({
|
||||
code: 200,
|
||||
message: "User successfully registered",
|
||||
data: registerResult
|
||||
})
|
||||
} catch (error) {
|
||||
next(error)
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = router
|
||||
15
server.js
15
server.js
@ -96,6 +96,21 @@ for (const route of routes) {
|
||||
}
|
||||
}
|
||||
|
||||
app.use((err, req, res, next) => {
|
||||
const statusCode = err.statusCode || 500
|
||||
|
||||
logger.error(err.message, ["API", "red"])
|
||||
|
||||
if (typeof err.serialize === "function") {
|
||||
return res.status(statusCode).json(err.serialize())
|
||||
}
|
||||
|
||||
return res.status(500).json({
|
||||
status: "error",
|
||||
message: "Internal Server Error"
|
||||
})
|
||||
})
|
||||
|
||||
app.listen(process.env.WEB_PORT || 3000, () => {
|
||||
logger.log(`Server listening at port : ${process.env.WEB_PORT || 3000}`, ["WEB", "yellow"])
|
||||
})
|
||||
@ -1,22 +1,15 @@
|
||||
const crypto = require("node:crypto")
|
||||
const DefaultError = require("../errors/DefaultError")
|
||||
|
||||
function register({ email, username, password }) {
|
||||
if (true) {
|
||||
return {
|
||||
code: 200,
|
||||
message: "User successfully registered",
|
||||
data: {
|
||||
id: crypto.randomUUID(),
|
||||
username: username,
|
||||
email: email
|
||||
}
|
||||
id: crypto.randomUUID(),
|
||||
username: username,
|
||||
email: email
|
||||
}
|
||||
} else {
|
||||
return {
|
||||
code: 418,
|
||||
error: "I'm a tea pot",
|
||||
message: "Error occured",
|
||||
}
|
||||
throw new DefaultError(418, "I'm a teapot", "", "TeaPotExeception")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user