Improve centralized error handling
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import * as contactService from '../services/contact.service.js';
|
||||
import { discoverContactsFromJMAP, getJmapConfigFromAccount } from '../services/jmap.service.js';
|
||||
import { formatErrorResponse } from '../utils/errors.js';
|
||||
import * as emailAccountService from '../services/email-account.service.js';
|
||||
import { logger } from '../utils/logger.js';
|
||||
|
||||
@@ -8,7 +7,7 @@ import { logger } from '../utils/logger.js';
|
||||
* Get all contacts for an email account
|
||||
* GET /api/contacts?accountId=xxx (required)
|
||||
*/
|
||||
export const getContacts = async (req, res) => {
|
||||
export const getContacts = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { accountId } = req.query;
|
||||
@@ -35,8 +34,7 @@ export const getContacts = async (req, res) => {
|
||||
data: contacts,
|
||||
});
|
||||
} catch (error) {
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -44,7 +42,7 @@ export const getContacts = async (req, res) => {
|
||||
* Discover potential contacts from JMAP (email senders)
|
||||
* GET /api/contacts/discover?accountId=xxx&search=query&limit=50
|
||||
*/
|
||||
export const discoverContacts = async (req, res) => {
|
||||
export const discoverContacts = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { accountId, search = '', limit = 50 } = req.query;
|
||||
@@ -96,8 +94,7 @@ export const discoverContacts = async (req, res) => {
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('ERROR in discoverContacts', { error: error.message, stack: error.stack });
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -106,7 +103,7 @@ export const discoverContacts = async (req, res) => {
|
||||
* POST /api/contacts
|
||||
* Body: { email, name, notes, accountId }
|
||||
*/
|
||||
export const addContact = async (req, res) => {
|
||||
export const addContact = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
logger.debug('Full req.body', { body: req.body });
|
||||
@@ -162,8 +159,7 @@ export const addContact = async (req, res) => {
|
||||
message: 'Kontakt pridaný a emaily synchronizované',
|
||||
});
|
||||
} catch (error) {
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -171,7 +167,7 @@ export const addContact = async (req, res) => {
|
||||
* Remove a contact
|
||||
* DELETE /api/contacts/:contactId?accountId=xxx
|
||||
*/
|
||||
export const removeContact = async (req, res) => {
|
||||
export const removeContact = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { contactId } = req.params;
|
||||
@@ -197,8 +193,7 @@ export const removeContact = 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);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -206,7 +201,7 @@ export const removeContact = async (req, res) => {
|
||||
* Update a contact
|
||||
* PATCH /api/contacts/:contactId?accountId=xxx
|
||||
*/
|
||||
export const updateContact = async (req, res) => {
|
||||
export const updateContact = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { contactId } = req.params;
|
||||
@@ -234,8 +229,7 @@ export const updateContact = async (req, res) => {
|
||||
message: 'Kontakt aktualizovaný',
|
||||
});
|
||||
} catch (error) {
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -244,7 +238,7 @@ export const updateContact = async (req, res) => {
|
||||
* POST /api/contacts/:contactId/link-company?accountId=xxx
|
||||
* Body: { companyId }
|
||||
*/
|
||||
export const linkCompanyToContact = async (req, res) => {
|
||||
export const linkCompanyToContact = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { contactId } = req.params;
|
||||
@@ -282,8 +276,7 @@ export const linkCompanyToContact = async (req, res) => {
|
||||
message: 'Firma bola linknutá ku kontaktu',
|
||||
});
|
||||
} catch (error) {
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -291,7 +284,7 @@ export const linkCompanyToContact = async (req, res) => {
|
||||
* Unlink company from contact
|
||||
* POST /api/contacts/:contactId/unlink-company?accountId=xxx
|
||||
*/
|
||||
export const unlinkCompanyFromContact = async (req, res) => {
|
||||
export const unlinkCompanyFromContact = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { contactId } = req.params;
|
||||
@@ -318,8 +311,7 @@ export const unlinkCompanyFromContact = async (req, res) => {
|
||||
message: 'Firma bola odlinknutá od kontaktu',
|
||||
});
|
||||
} catch (error) {
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -328,7 +320,7 @@ export const unlinkCompanyFromContact = async (req, res) => {
|
||||
* POST /api/contacts/:contactId/create-company?accountId=xxx
|
||||
* Body: { name, email, phone, address, city, country, website, description } (all optional, uses contact data as defaults)
|
||||
*/
|
||||
export const createCompanyFromContact = async (req, res) => {
|
||||
export const createCompanyFromContact = async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.userId;
|
||||
const { contactId } = req.params;
|
||||
@@ -356,7 +348,6 @@ export const createCompanyFromContact = async (req, res) => {
|
||||
message: 'Firma bola vytvorená z kontaktu',
|
||||
});
|
||||
} catch (error) {
|
||||
const errorResponse = formatErrorResponse(error, process.env.NODE_ENV === 'development');
|
||||
res.status(error.statusCode || 500).json(errorResponse);
|
||||
return next(error);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user