diff --git a/server/routes/posts.js b/server/routes/posts.js new file mode 100644 index 0000000..c4f7660 --- /dev/null +++ b/server/routes/posts.js @@ -0,0 +1,45 @@ +const express = require('express'); +const router = express.Router(); +const { getAllPosts, getPostBySlug } = require('../utils/markdownParser'); + +// Get all posts + +router.get('/', async (req, res) => { + try { + const includeDrafts = req.query.includeDrafts === 'true'; + const posts = await getAllPosts(includeDrafts); + + // Return only necessary data for listing + const postsListing = posts.map(({ title, description, date, tags, slug, excerpt }) => ({ + title, + description, + date, + tags, + slug, + excerpt + })); + + res.json(postsListing); + } catch (error) { + console.error('Error fetching posts:', error); + res.status(500).json({ error: 'Failed to fetch posts' }); + } +}); + +// Get post by slug +router.get('/:slug', async (req, res) => { + try { + const post = await getPostBySlug(req.params.slug); + + if (post.draft && process.env.NODE_ENV === 'production') { + return res.status(404).json({ error: 'Post not found' }); + } + + res.json(post); + } catch (error) { + console.error(`Error fetching post ${req.params.slug}:`, error); + res.status(404).json({ error: 'Post not found' }); + } +}); + +module.exports = router; \ No newline at end of file