const express = require("express"); const path = require("path"); const fs = require("fs"); const multer = require("multer"); const Photo = require("../models/Photo"); const router = express.Router(); const uploadsDir = path.join(__dirname, "..", "uploads"); fs.mkdirSync(uploadsDir, { recursive: true }); const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, uploadsDir); }, filename: (req, file, cb) => { const timestamp = Date.now(); const safeName = file.originalname.replace(/\s+/g, "-"); cb(null, `${timestamp}-${safeName}`); }, }); const upload = multer({ storage }); router.get("/", async (req, res) => { try { const filter = {}; if (req.query.active === "true") { filter.active = true; } const photos = await Photo.find(filter).sort({ createdAt: -1 }); res.json(photos); } catch (error) { res.status(500).json({ message: "Failed to fetch photos" }); } }); router.post("/", async (req, res) => { try { const photo = await Photo.create(req.body); res.status(201).json(photo); } catch (error) { res.status(400).json({ message: "Failed to create photo" }); } }); router.post("/upload", upload.single("file"), async (req, res) => { try { if (!req.file) { return res.status(400).json({ message: "File is required" }); } const baseUrl = `${req.protocol}://${req.get("host")}`; const url = `${baseUrl}/uploads/${req.file.filename}`; const photo = await Photo.create({ url, caption: req.body.caption || "", active: req.body.active !== "false", }); res.status(201).json(photo); } catch (error) { res.status(400).json({ message: "Failed to upload photo" }); } }); router.delete("/:id", async (req, res) => { try { const photo = await Photo.findByIdAndDelete(req.params.id); if (!photo) { return res.status(404).json({ message: "Photo not found" }); } res.json({ ok: true }); } catch (error) { res.status(400).json({ message: "Failed to delete photo" }); } }); module.exports = router;