create-new-express-app
Version:
A CLI tool to create a TypeScript Express application with best practices
75 lines (67 loc) • 1.99 kB
text/typescript
import { type ErrorResponseBody, type IncomingData } from "@/schemas";
import { StatusCodes } from "http-status-codes";
class DBException extends Error {
public type: string;
public message: string;
public data: IncomingData;
public status: number;
public body: ErrorResponseBody;
constructor(message: string, data: IncomingData, status: number) {
super(message);
this.body = {
code: data.code || status.toLocaleString(),
error: this.constructor.name,
message: message,
description: data.description,
};
this.type = this.constructor.name;
this.message = message;
this.data = data;
this.status = status;
}
}
class FetchFailedException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.BAD_REQUEST);
}
}
class DeleteFailedException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.BAD_REQUEST);
}
}
class CreateFailedException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.BAD_REQUEST);
}
}
class UpdateFailedException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.BAD_REQUEST);
}
}
class DuplicateEntryException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.CONFLICT);
}
}
class FetchEmptyException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.BAD_REQUEST);
}
}
class RedisException extends DBException {
constructor(message: string, data: IncomingData) {
super(message, data, StatusCodes.INTERNAL_SERVER_ERROR);
}
}
export {
DBException,
DeleteFailedException,
FetchFailedException,
CreateFailedException,
UpdateFailedException,
DuplicateEntryException,
RedisException,
FetchEmptyException,
};