response.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import type { EventHandlerRequest, H3Event } from 'h3';
  2. export function useResponseSuccess<T = any>(data: T) {
  3. return {
  4. code: 0,
  5. data,
  6. error: null,
  7. message: 'ok',
  8. };
  9. }
  10. export function usePageResponseSuccess<T = any>(
  11. page: number | string,
  12. pageSize: number | string,
  13. list: T[],
  14. { message = 'ok' } = {},
  15. ) {
  16. const pageData = pagination(
  17. Number.parseInt(`${page}`),
  18. Number.parseInt(`${pageSize}`),
  19. list,
  20. );
  21. return {
  22. ...useResponseSuccess({
  23. items: pageData,
  24. total: list.length,
  25. }),
  26. message,
  27. };
  28. }
  29. export function useResponseError(message: string, error: any = null) {
  30. return {
  31. code: -1,
  32. data: null,
  33. error,
  34. message,
  35. };
  36. }
  37. export function forbiddenResponse(
  38. event: H3Event<EventHandlerRequest>,
  39. message = 'Forbidden Exception',
  40. ) {
  41. setResponseStatus(event, 403);
  42. return useResponseError(message, message);
  43. }
  44. export function unAuthorizedResponse(event: H3Event<EventHandlerRequest>) {
  45. setResponseStatus(event, 401);
  46. return useResponseError('Unauthorized Exception', 'Unauthorized Exception');
  47. }
  48. export function sleep(ms: number) {
  49. return new Promise((resolve) => setTimeout(resolve, ms));
  50. }
  51. export function pagination<T = any>(
  52. pageNo: number,
  53. pageSize: number,
  54. array: T[],
  55. ): T[] {
  56. const offset = (pageNo - 1) * Number(pageSize);
  57. return offset + Number(pageSize) >= array.length
  58. ? array.slice(offset)
  59. : array.slice(offset, offset + Number(pageSize));
  60. }