40 lines
1.8 KiB
TypeScript
40 lines
1.8 KiB
TypeScript
import { Router } from 'express';
|
|
import { authenticate } from '../../middlewares/authenticate.js';
|
|
import { validateRequest } from '../../middlewares/validate-request.js';
|
|
import {
|
|
createTransactionSchema,
|
|
updateTransactionSchema,
|
|
transactionIdSchema,
|
|
notificationSchema
|
|
} from './transactions.schema.js';
|
|
import {
|
|
listTransactionsHandler,
|
|
createTransactionHandler,
|
|
getTransactionHandler,
|
|
updateTransactionHandler,
|
|
deleteTransactionHandler,
|
|
createTransactionFromNotificationHandler,
|
|
aiClassifyTransactionHandler,
|
|
createBlacklistRuleFromTransactionHandler,
|
|
createRuleFromTransactionHandler,
|
|
aiSuggestRuleFromTransactionHandler
|
|
} from './transactions.controller.js';
|
|
|
|
const router = Router();
|
|
|
|
router.post('/notification', validateRequest({ body: notificationSchema }), createTransactionFromNotificationHandler);
|
|
|
|
router.use(authenticate);
|
|
|
|
router.get('/', listTransactionsHandler);
|
|
router.post('/', validateRequest({ body: createTransactionSchema }), createTransactionHandler);
|
|
router.get('/:id', validateRequest({ params: transactionIdSchema }), getTransactionHandler);
|
|
router.patch('/:id', validateRequest({ params: transactionIdSchema, body: updateTransactionSchema }), updateTransactionHandler);
|
|
router.delete('/:id', validateRequest({ params: transactionIdSchema }), deleteTransactionHandler);
|
|
router.post('/:id/ai-classify', validateRequest({ params: transactionIdSchema }), aiClassifyTransactionHandler);
|
|
router.post('/:id/rules/blacklist', validateRequest({ params: transactionIdSchema }), createBlacklistRuleFromTransactionHandler);
|
|
router.post('/:id/rules/from-notification', validateRequest({ params: transactionIdSchema }), createRuleFromTransactionHandler);
|
|
router.post('/:id/rules/ai-suggest', validateRequest({ params: transactionIdSchema }), aiSuggestRuleFromTransactionHandler);
|
|
|
|
export default router;
|