| import { Request, Response } from 'express';
|
| import prisma from '../models/prisma';
|
|
|
|
|
| export const getPublishedPosts = async (req: Request, res: Response) => {
|
| try {
|
| const posts = await prisma.blogPost.findMany({
|
| where: {
|
| status: 'PUBLISHED',
|
| publishedAt: {
|
| lte: new Date(),
|
| },
|
| },
|
| orderBy: {
|
| publishedAt: 'desc',
|
| },
|
| include: {
|
| author: {
|
| select: {
|
| name: true,
|
| },
|
| },
|
| },
|
| });
|
|
|
| return res.status(200).json(posts);
|
| } catch (error) {
|
| console.error('Error fetching blog posts:', error);
|
| return res.status(500).json({ error: 'Internal server error' });
|
| }
|
| };
|
|
|
|
|
| export const getPostBySlug = async (req: Request, res: Response) => {
|
| try {
|
| const { slug } = req.params;
|
|
|
| const post = await prisma.blogPost.findFirst({
|
| where: {
|
| slug,
|
| status: 'PUBLISHED',
|
| publishedAt: {
|
| lte: new Date(),
|
| },
|
| },
|
| include: {
|
| author: {
|
| select: {
|
| name: true,
|
| },
|
| },
|
| },
|
| });
|
|
|
| if (!post) {
|
| return res.status(404).json({ error: 'Post not found' });
|
| }
|
|
|
| return res.status(200).json(post);
|
| } catch (error) {
|
| console.error('Error fetching blog post:', error);
|
| return res.status(500).json({ error: 'Internal server error' });
|
| }
|
| };
|
|
|