response.ts 757 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { Response } from 'express';
  2. interface SuccessBody<T> {
  3. success: true;
  4. data: T;
  5. error: null;
  6. }
  7. interface ErrorBody {
  8. success: false;
  9. data: null;
  10. error: {
  11. message: string;
  12. code: string;
  13. details?: unknown;
  14. };
  15. }
  16. export function sendSuccess<T>(res: Response, data: T, statusCode = 200): void {
  17. const body: SuccessBody<T> = { success: true, data, error: null };
  18. res.status(statusCode).json(body);
  19. }
  20. export function sendError(
  21. res: Response,
  22. statusCode: number,
  23. code: string,
  24. message: string,
  25. details?: unknown,
  26. ): void {
  27. const body: ErrorBody = {
  28. success: false,
  29. data: null,
  30. error: { message, code, ...(details !== undefined ? { details } : {}) },
  31. };
  32. res.status(statusCode).json(body);
  33. }