erp-core-backend/src/modules/warehouses/warehouses.routes.ts
rckrdmrd a127a4a424 feat(routes): Add independent routes for Invoices, Products, Warehouses modules
- Create invoices.controller.ts and invoices.routes.ts with singleton service
- Create products.service.ts, products.controller.ts, products.routes.ts
- Create warehouses.service.ts, warehouses.controller.ts, warehouses.routes.ts
- Register all routes in app.ts
- Use Zod validation schemas in all controllers
- Apply multi-tenant isolation via tenantId
- Update invoices.module.ts to use singleton pattern

All business modules now have API routes registered and build passes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 03:43:43 -06:00

68 lines
2.4 KiB
TypeScript

import { Router } from 'express';
import { warehousesController } from './warehouses.controller.js';
import { authenticate, requireRoles } from '../../shared/middleware/auth.middleware.js';
const router = Router();
// All routes require authentication
router.use(authenticate);
// ========== LOCATIONS (before :id routes to avoid conflicts) ==========
// List all locations
router.get('/locations', (req, res, next) => warehousesController.findAllLocations(req, res, next));
// Get location by ID
router.get('/locations/:id', (req, res, next) => warehousesController.findLocationById(req, res, next));
// Create location
router.post('/locations', requireRoles('admin', 'manager', 'inventory', 'super_admin'), (req, res, next) =>
warehousesController.createLocation(req, res, next)
);
// Update location
router.patch('/locations/:id', requireRoles('admin', 'manager', 'inventory', 'super_admin'), (req, res, next) =>
warehousesController.updateLocation(req, res, next)
);
// Delete location
router.delete('/locations/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
warehousesController.deleteLocation(req, res, next)
);
// ========== CONVENIENCE ROUTES ==========
// Get default warehouse
router.get('/default', (req, res, next) => warehousesController.getDefault(req, res, next));
// Get active warehouses
router.get('/active', (req, res, next) => warehousesController.getActive(req, res, next));
// Get warehouse by code
router.get('/code/:code', (req, res, next) => warehousesController.findByCode(req, res, next));
// Get locations for a specific warehouse
router.get('/:warehouseId/locations', (req, res, next) => warehousesController.getWarehouseLocations(req, res, next));
// ========== WAREHOUSES ==========
// List warehouses
router.get('/', (req, res, next) => warehousesController.findAll(req, res, next));
// Get warehouse by ID
router.get('/:id', (req, res, next) => warehousesController.findById(req, res, next));
// Create warehouse
router.post('/', requireRoles('admin', 'manager', 'super_admin'), (req, res, next) =>
warehousesController.create(req, res, next)
);
// Update warehouse
router.patch('/:id', requireRoles('admin', 'manager', 'super_admin'), (req, res, next) =>
warehousesController.update(req, res, next)
);
// Delete warehouse
router.delete('/:id', requireRoles('admin', 'super_admin'), (req, res, next) =>
warehousesController.delete(req, res, next)
);
export default router;