arvox-backend
Version:
Un framework backend moderne et modulaire basé sur Hono, TypeScript et l'architecture hexagonale avec authentification Better Auth + Drizzle intégrée
152 lines • 3.87 kB
JavaScript
/**
* Utility class for standardizing API responses
*/
export class ResponseUtil {
/**
* Create a successful response
* @param data - Data to return
* @param status - HTTP status code
* @returns Response object with JSON and status
*/
success(data, status = 200) {
return {
json: {
success: true,
data
},
status
};
}
/**
* Create an error response
* @param error - Error message or Error object
* @param status - HTTP status code
* @returns Response object with JSON and status
*/
error(error, status = 400) {
const message = error instanceof Error ? error.message : error;
return {
json: {
success: false,
error: message
},
status
};
}
/**
* Create a paginated response
* @param items - Array of items
* @param total - Total count
* @param page - Current page
* @param limit - Items per page
* @param status - HTTP status code
* @returns Paginated response object
*/
paginated(items, total, page, limit, status = 200) {
const totalPages = Math.ceil(total / limit);
return {
json: {
success: true,
data: {
items,
pagination: {
total,
page,
limit,
totalPages,
hasNext: page < totalPages,
hasPrev: page > 1
}
}
},
status
};
}
/**
* Create a validation error response
* @param errors - Validation errors
* @param status - HTTP status code
* @returns Validation error response
*/
validationError(errors, status = 422) {
return {
json: {
success: false,
error: 'Validation failed',
details: errors
},
status
};
}
/**
* Create a not found response
* @param resource - Resource that was not found
* @returns Not found response
*/
notFound(resource = 'Resource') {
return {
json: {
success: false,
error: `${resource} not found`
},
status: 404
};
}
/**
* Create an unauthorized response
* @param message - Optional custom message
* @returns Unauthorized response
*/
unauthorized(message = 'Unauthorized') {
return {
json: {
success: false,
error: message
},
status: 401
};
}
/**
* Create a forbidden response
* @param message - Optional custom message
* @returns Forbidden response
*/
forbidden(message = 'Forbidden') {
return {
json: {
success: false,
error: message
},
status: 403
};
}
/**
* Create a conflict response
* @param message - Conflict message
* @returns Conflict response
*/
conflict(message) {
return {
json: {
success: false,
error: message
},
status: 409
};
}
/**
* Create a server error response
* @param message - Error message
* @returns Server error response
*/
serverError(message = 'Internal server error') {
return {
json: {
success: false,
error: message
},
status: 500
};
}
}
//# sourceMappingURL=response.util.js.map