Improve centralized error handling

This commit is contained in:
richardtekula
2025-12-04 07:39:52 +01:00
parent 109cae1167
commit 35dfa07668
14 changed files with 266 additions and 336 deletions

View File

@@ -2,13 +2,12 @@ import * as emailAccountService from '../services/email-account.service.js';
import {
logEmailLink,
} from '../services/audit.service.js';
import { formatErrorResponse } from '../utils/errors.js';
/**
* Get all email accounts for logged-in user
* GET /api/email-accounts
*/
export const getEmailAccounts = async (req, res) => {
export const getEmailAccounts = async (req, res, next) => {
try {
const userId = req.userId;
const accounts = await emailAccountService.getUserEmailAccounts(userId);
@@ -18,8 +17,7 @@ export const getEmailAccounts = async (req, res) => {
data: accounts,
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};
@@ -27,7 +25,7 @@ export const getEmailAccounts = async (req, res) => {
* Get a specific email account
* GET /api/email-accounts/:id
*/
export const getEmailAccount = async (req, res) => {
export const getEmailAccount = async (req, res, next) => {
try {
const userId = req.userId;
const { id } = req.params;
@@ -39,8 +37,7 @@ export const getEmailAccount = async (req, res) => {
data: account,
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};
@@ -48,7 +45,7 @@ export const getEmailAccount = async (req, res) => {
* Create a new email account
* POST /api/email-accounts
*/
export const createEmailAccount = async (req, res) => {
export const createEmailAccount = async (req, res, next) => {
const { email, emailPassword } = req.body;
const userId = req.userId;
const ipAddress = req.ip || req.connection.remoteAddress;
@@ -70,8 +67,7 @@ export const createEmailAccount = async (req, res) => {
message: 'Email účet úspešne pripojený',
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};
@@ -79,7 +75,7 @@ export const createEmailAccount = async (req, res) => {
* Update email account password
* PATCH /api/email-accounts/:id/password
*/
export const updateEmailAccountPassword = async (req, res) => {
export const updateEmailAccountPassword = async (req, res, next) => {
try {
const userId = req.userId;
const { id } = req.params;
@@ -97,8 +93,7 @@ export const updateEmailAccountPassword = async (req, res) => {
message: 'Heslo k emailovému účtu bolo aktualizované',
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};
@@ -106,7 +101,7 @@ export const updateEmailAccountPassword = async (req, res) => {
* Toggle email account active status
* PATCH /api/email-accounts/:id/status
*/
export const toggleEmailAccountStatus = async (req, res) => {
export const toggleEmailAccountStatus = async (req, res, next) => {
try {
const userId = req.userId;
const { id } = req.params;
@@ -124,8 +119,7 @@ export const toggleEmailAccountStatus = async (req, res) => {
message: `Email účet ${isActive ? 'aktivovaný' : 'deaktivovaný'}`,
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};
@@ -133,7 +127,7 @@ export const toggleEmailAccountStatus = async (req, res) => {
* Set email account as primary
* POST /api/email-accounts/:id/set-primary
*/
export const setPrimaryEmailAccount = async (req, res) => {
export const setPrimaryEmailAccount = async (req, res, next) => {
try {
const userId = req.userId;
const { id } = req.params;
@@ -146,8 +140,7 @@ export const setPrimaryEmailAccount = async (req, res) => {
message: 'Primárny email účet bol nastavený',
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};
@@ -155,7 +148,7 @@ export const setPrimaryEmailAccount = async (req, res) => {
* Delete email account
* DELETE /api/email-accounts/:id
*/
export const deleteEmailAccount = async (req, res) => {
export const deleteEmailAccount = async (req, res, next) => {
try {
const userId = req.userId;
const { id } = req.params;
@@ -168,7 +161,6 @@ export const deleteEmailAccount = async (req, res) => {
message: result.message,
});
} catch (error) {
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
res.status(error.statusCode || 500).json(errorResponse);
return next(error);
}
};