57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
import express from 'express';
|
|
import * as contactController from '../controllers/contact.controller.js';
|
|
import { authenticate } from '../middlewares/auth/authMiddleware.js';
|
|
import { validateBody, validateParams } from '../middlewares/security/validateInput.js';
|
|
import { z } from 'zod';
|
|
|
|
const router = express.Router();
|
|
|
|
// All contact routes require authentication
|
|
router.use(authenticate);
|
|
|
|
/**
|
|
* Contact management
|
|
*/
|
|
|
|
// Get all contacts
|
|
router.get('/', contactController.getContacts);
|
|
|
|
// Discover potential contacts from JMAP
|
|
router.get('/discover', contactController.discoverContacts);
|
|
|
|
// Add a new contact
|
|
router.post(
|
|
'/',
|
|
validateBody(
|
|
z.object({
|
|
email: z.string().email('Neplatný formát emailu'),
|
|
name: z.string().optional(),
|
|
notes: z.string().optional(),
|
|
accountId: z.string().uuid().optional(),
|
|
})
|
|
),
|
|
contactController.addContact
|
|
);
|
|
|
|
// Update a contact
|
|
router.patch(
|
|
'/:contactId',
|
|
validateParams(z.object({ contactId: z.string().uuid() })),
|
|
validateBody(
|
|
z.object({
|
|
name: z.string().optional(),
|
|
notes: z.string().optional(),
|
|
})
|
|
),
|
|
contactController.updateContact
|
|
);
|
|
|
|
// Remove a contact
|
|
router.delete(
|
|
'/:contactId',
|
|
validateParams(z.object({ contactId: z.string().uuid() })),
|
|
contactController.removeContact
|
|
);
|
|
|
|
export default router;
|