const express = require("express"); const { query } = require("../config/database"); const router = express.Router(); // Get all products router.get("/products", async (req, res) => { try { const result = await query( "SELECT id, name, description, shortdescription, price, imageurl, images, category, color, stockquantity, isactive, createdat FROM products WHERE isactive = true ORDER BY createdat DESC" ); res.json({ success: true, products: result.rows, }); } catch (error) { console.error("Products API error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get featured products router.get("/products/featured", async (req, res) => { try { const limit = parseInt(req.query.limit) || 4; const result = await query( "SELECT id, name, description, price, imageurl, images FROM products WHERE isactive = true ORDER BY createdat DESC LIMIT $1", [limit] ); res.json({ success: true, products: result.rows, }); } catch (error) { console.error("Featured products error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get single product router.get("/products/:id", async (req, res) => { try { const result = await query( "SELECT * FROM products WHERE id = $1 AND isactive = true", [req.params.id] ); if (result.rows.length === 0) { return res .status(404) .json({ success: false, message: "Product not found" }); } res.json({ success: true, product: result.rows[0], }); } catch (error) { console.error("Product detail error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get site settings router.get("/settings", async (req, res) => { try { const result = await query("SELECT * FROM sitesettings LIMIT 1"); res.json({ success: true, settings: result.rows[0] || {}, }); } catch (error) { console.error("Settings error:", error); res.json({ success: true, settings: {} }); } }); // Get homepage sections router.get("/homepage/sections", async (req, res) => { try { const result = await query( "SELECT * FROM homepagesections ORDER BY displayorder ASC" ); res.json({ success: true, sections: result.rows, }); } catch (error) { console.error("Homepage sections error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get portfolio projects router.get("/portfolio/projects", async (req, res) => { try { const result = await query( "SELECT id, title, description, featuredimage, images, category, categoryid, isactive, createdat FROM portfolioprojects WHERE isactive = true ORDER BY displayorder ASC, createdat DESC" ); res.json({ success: true, projects: result.rows, }); } catch (error) { console.error("Portfolio error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get blog posts router.get("/blog/posts", async (req, res) => { try { const result = await query( "SELECT id, title, slug, excerpt, content, imageurl, ispublished, createdat FROM blogposts WHERE ispublished = true ORDER BY createdat DESC" ); res.json({ success: true, posts: result.rows, }); } catch (error) { console.error("Blog posts error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get single blog post by slug router.get("/blog/posts/:slug", async (req, res) => { try { const result = await query( "SELECT * FROM blogposts WHERE slug = $1 AND ispublished = true", [req.params.slug] ); if (result.rows.length === 0) { return res .status(404) .json({ success: false, message: "Blog post not found" }); } res.json({ success: true, post: result.rows[0], }); } catch (error) { console.error("Blog post detail error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get custom pages router.get("/pages", async (req, res) => { try { const result = await query( "SELECT id, title, slug, content, metatitle, metadescription, isactive, createdat FROM pages WHERE isactive = true ORDER BY createdat DESC" ); res.json({ success: true, pages: result.rows, }); } catch (error) { console.error("Pages error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get single page by slug router.get("/pages/:slug", async (req, res) => { try { const result = await query( "SELECT * FROM pages WHERE slug = $1 AND isactive = true", [req.params.slug] ); if (result.rows.length === 0) { return res .status(404) .json({ success: false, message: "Page not found" }); } res.json({ success: true, page: result.rows[0], }); } catch (error) { console.error("Page detail error:", error); res.status(500).json({ success: false, message: "Server error" }); } }); // Get menu items for frontend navigation router.get("/menu", async (req, res) => { try { const result = await query( "SELECT settings FROM site_settings WHERE key = 'menu'" ); const items = result.rows.length > 0 ? result.rows[0].settings.items || [] : []; // Filter only visible items const visibleItems = items.filter((item) => item.visible !== false); res.json({ success: true, items: visibleItems, }); } catch (error) { console.error("Menu error:", error); res.json({ success: true, items: [] }); } }); // Get homepage settings for frontend router.get("/homepage/settings", async (req, res) => { try { const result = await query( "SELECT settings FROM site_settings WHERE key = 'homepage'" ); const settings = result.rows.length > 0 ? result.rows[0].settings : {}; res.json({ success: true, settings, }); } catch (error) { console.error("Homepage settings error:", error); res.json({ success: true, settings: {} }); } }); module.exports = router;