add routes for posts
This commit is contained in:
		
							parent
							
								
									1efee5a27c
								
							
						
					
					
						commit
						b8596b2296
					
				
					 1 changed files with 45 additions and 0 deletions
				
			
		
							
								
								
									
										45
									
								
								server/routes/posts.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								server/routes/posts.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -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;
 | 
				
			||||||
		Loading…
	
		Reference in a new issue