feat: add products routes
This commit is contained in:
parent
aca6a4da98
commit
2048d539d3
1 changed files with 39 additions and 0 deletions
39
apps/express-template/src/routes/products.ts
Normal file
39
apps/express-template/src/routes/products.ts
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
import { Router } from "express";
|
||||||
|
import { createProduct, getProducts } from "@repo/db/index.ts";
|
||||||
|
|
||||||
|
const router = Router();
|
||||||
|
|
||||||
|
// GET /api/products - Get all products
|
||||||
|
router.get("/", async (req, res) => {
|
||||||
|
try {
|
||||||
|
const page = parseInt(req.query.page as string) || 1;
|
||||||
|
const limit = parseInt(req.query.limit as string) || 10;
|
||||||
|
|
||||||
|
// Validate pagination parameters
|
||||||
|
if (page < 1 || limit < 1 || limit > 100) {
|
||||||
|
return res.status(400).json({
|
||||||
|
error: "Invalid pagination parameters. Page must be >= 1, limit must be 1-100",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await getProducts(page, limit);
|
||||||
|
res.status(200).json(result);
|
||||||
|
} catch (e: any) {
|
||||||
|
console.log("Error fetching products:", e);
|
||||||
|
res.status(500).json({ error: e.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// POST /api/products - Create new product
|
||||||
|
router.post("/", async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { name, price, description } = req.body;
|
||||||
|
await createProduct({ name, price, description });
|
||||||
|
res.status(201).json({ ok: true });
|
||||||
|
} catch (e: any) {
|
||||||
|
console.error("Error creating product:", e);
|
||||||
|
res.status(500).json({ error: e.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export default router;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue