52 lines
962 B
TypeScript
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,
|
|
};
|
|
}
|