- 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>
68 lines
2.4 KiB
TypeScript
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;
|