Lb1/packages/shared/src/utils/response.ts

52 lines
962 B
TypeScript

export interface ApiResponse<T = any> {
success: boolean;
message?: string;
data?: T;
pagination?: {
total: number;
page: number;
pageSize: number;
hasMore: boolean;
};
errors?: Array<{ field?: string; message: string }>;
}
export function successResponse<T>(data: T, message = 'Operation executed successfully'): ApiResponse<T> {
return {
success: true,
message,
data,
};
}
export function paginatedResponse<T>(
data: T[],
total: number,
page: number,
pageSize: number,
message = 'Operation executed successfully'
): ApiResponse<T[]> {
return {
success: true,
message,
data,
pagination: {
total,
page,
pageSize,
hasMore: page * pageSize < total,
},
};
}
export function errorResponse(
message = 'An error occurred',
errors: Array<{ field?: string; message: string }> = []
): ApiResponse {
return {
success: false,
message,
errors,
};
}