initialize git, basic setup for crm
This commit is contained in:
82
src/utils/errors.js
Normal file
82
src/utils/errors.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* Custom error classes pre aplikáciu
|
||||
*/
|
||||
|
||||
export class AppError extends Error {
|
||||
constructor(message, statusCode = 500, details = null) {
|
||||
super(message);
|
||||
this.statusCode = statusCode;
|
||||
this.details = details;
|
||||
this.isOperational = true;
|
||||
|
||||
Error.captureStackTrace(this, this.constructor);
|
||||
}
|
||||
}
|
||||
|
||||
export class ValidationError extends AppError {
|
||||
constructor(message, details = null) {
|
||||
super(message, 400, details);
|
||||
this.name = 'ValidationError';
|
||||
}
|
||||
}
|
||||
|
||||
export class AuthenticationError extends AppError {
|
||||
constructor(message = 'Neautorizovaný prístup') {
|
||||
super(message, 401);
|
||||
this.name = 'AuthenticationError';
|
||||
}
|
||||
}
|
||||
|
||||
export class ForbiddenError extends AppError {
|
||||
constructor(message = 'Prístup zamietnutý') {
|
||||
super(message, 403);
|
||||
this.name = 'ForbiddenError';
|
||||
}
|
||||
}
|
||||
|
||||
export class NotFoundError extends AppError {
|
||||
constructor(message = 'Nenájdené') {
|
||||
super(message, 404);
|
||||
this.name = 'NotFoundError';
|
||||
}
|
||||
}
|
||||
|
||||
export class ConflictError extends AppError {
|
||||
constructor(message = 'Konflikt') {
|
||||
super(message, 409);
|
||||
this.name = 'ConflictError';
|
||||
}
|
||||
}
|
||||
|
||||
export class RateLimitError extends AppError {
|
||||
constructor(message = 'Príliš veľa požiadaviek') {
|
||||
super(message, 429);
|
||||
this.name = 'RateLimitError';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error response formatter
|
||||
* @param {Error} error
|
||||
* @param {boolean} includeStack - Či má zahrnúť stack trace (len development)
|
||||
* @returns {Object} Formatted error response
|
||||
*/
|
||||
export const formatErrorResponse = (error, includeStack = false) => {
|
||||
const response = {
|
||||
success: false,
|
||||
error: {
|
||||
message: error.message || 'Interná chyba servera',
|
||||
statusCode: error.statusCode || 500,
|
||||
},
|
||||
};
|
||||
|
||||
if (error.details) {
|
||||
response.error.details = error.details;
|
||||
}
|
||||
|
||||
if (includeStack && process.env.NODE_ENV === 'development') {
|
||||
response.error.stack = error.stack;
|
||||
}
|
||||
|
||||
return response;
|
||||
};
|
||||
Reference in New Issue
Block a user