Add AI DEV Node deployment foundation
This commit is contained in:
15
server/http/apiResponse.ts
Normal file
15
server/http/apiResponse.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import type { Response } from 'express';
|
||||
|
||||
export interface ApiResponse<T> {
|
||||
code: number;
|
||||
message: string;
|
||||
data: T | null;
|
||||
}
|
||||
|
||||
export function ok<T>(res: Response, data: T, message = 'OK'): void {
|
||||
res.status(200).json({ code: 200, message, data } satisfies ApiResponse<T>);
|
||||
}
|
||||
|
||||
export function created<T>(res: Response, data: T, message = 'CREATED'): void {
|
||||
res.status(201).json({ code: 201, message, data } satisfies ApiResponse<T>);
|
||||
}
|
||||
33
server/http/errors.ts
Normal file
33
server/http/errors.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import type { NextFunction, Request, Response } from 'express';
|
||||
|
||||
export class ApiError extends Error {
|
||||
constructor(
|
||||
public readonly status: number,
|
||||
message: string,
|
||||
) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
export function errorHandler(
|
||||
error: unknown,
|
||||
_req: Request,
|
||||
res: Response,
|
||||
_next: NextFunction,
|
||||
): void {
|
||||
if (error instanceof ApiError) {
|
||||
res.status(error.status).json({
|
||||
code: error.status,
|
||||
message: error.message,
|
||||
data: null,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
console.error(error);
|
||||
res.status(500).json({
|
||||
code: 500,
|
||||
message: 'Internal server error',
|
||||
data: null,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user