import { Router, Request, Response } from 'express';
import { products, orders } from './data';
const router = Router();
// GET /api/products - Get all products
router.get('/products', (req: Request, res: Response) => {
res.json(products);
});
// GET /api/products/search - Search products
router.get('/products/search', (req: Request, res: Response) => {
const query = (req.query.q as string || '').toLowerCase();
if (!query) {
res.status(400).json({ error: 'Query parameter "q" is required' });
return;
}
const results = products.filter(p =>
p.name.toLowerCase().includes(query) ||
p.description.toLowerCase().includes(query) ||
p.category.toLowerCase().includes(query)
);
res.json(results);
});
// GET /api/products/:id - Get product by ID
router.get('/products/:id', (req: Request, res: Response) => {
const product = products.find(p => p.id === req.params.id);
if (!product) {
res.status(404).json({ error: 'Product not found' });
return;
}
res.json(product);
});
// GET /api/orders - Get all orders
router.get('/orders', (req: Request, res: Response) => {
res.json(orders);
});
// GET /api/orders/:id - Get order by ID
router.get('/orders/:id', (req: Request, res: Response) => {
const order = orders.find(o => o.orderId === req.params.id);
if (!order) {
res.status(404).json({ error: 'Order not found' });
return;
}
res.json(order);
});
// POST /api/orders - Create order
router.post('/orders', (req: Request, res: Response) => {
const { productId, quantity } = req.body;
if (!productId || !quantity) {
res.status(400).json({ error: 'productId and quantity are required' });
return;
}
const product = products.find(p => p.id === productId);
if (!product) {
res.status(404).json({ error: 'Product not found' });
return;
}
const newOrder = {
orderId: `ord-${Date.now()}`,
productId,
productName: product.name,
quantity,
unitPrice: product.price,
totalPrice: product.price * quantity,
status: 'created' as const,
createdAt: new Date().toISOString()
};
orders.push(newOrder);
res.status(201).json(newOrder);
});
// GET /api/health - Health check
router.get('/health', (req: Request, res: Response) => {
res.json({
status: 'healthy',
version: '1.0.0',
timestamp: new Date().toISOString(),
service: 'apim-mcp-backend-api',
stats: {
productsCount: products.length,
ordersCount: orders.length
}
});
});
export default router;