Select Git revision
product.js 4.10 KiB
const express = require("express");
const pool = require("../config/database");
const multer = require("multer");
const path = require("path");
const fs = require("fs");
const router = express.Router();
// ตั้งค่าที่เก็บไฟล์รูป
const uploadDir = "public/uploads";
if (!fs.existsSync(uploadDir)) {
fs.mkdirSync(uploadDir, { recursive: true });
}
// ตั้งค่า Multer สำหรับอัปโหลดรูป
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, uploadDir);
},
filename: (req, file, cb) => {
cb(null, Date.now() + path.extname(file.originalname)); // ตั้งชื่อไฟล์เป็น timestamp
}
});
const upload = multer({ storage: storage });
// ดึงสินค้าทั้งหมด
router.get("/", async (req, res) => {
try {
const [products] = await pool.execute("SELECT * FROM products");
res.render("product", { products });
} catch (error) {
console.error("Error fetching products:", error);
res.status(500).send("Error loading products.");
}
});
// แสดงฟอร์มเพิ่มสินค้า
router.get("/add", (req, res) => {
res.render("product_add", { product: {}, message: "" });
});
// เพิ่มสินค้าใหม่พร้อมรูป
router.post("/add", upload.single("image"), async (req, res) => {
try {
console.log("Debugging Data:", req.body);
console.log("File Upload:", req.file);
const { name, price, stock, description } = req.body;
if (!name || !price || !stock || !description || !req.file) {
throw new Error("Missing required fields");
}
const imagePath = "/uploads/" + req.file.filename;
await pool.execute("INSERT INTO products (name, price, stock, description, image_url) VALUES (?, ?, ?, ?, ?)",
[name, price, stock, description, imagePath]);
console.log("Product added successfully!");
res.redirect("/products");
} catch (error) {
console.error("Error adding product:", error);
res.status(500).json({ message: "Internal Server Error", error: error.message });
}
});
// ดึงข้อมูลสินค้าตาม ID และแสดงหน้าแก้ไข
router.get("/edit/:id", async (req, res) => {
try {