mirror of
				https://github.com/DerTyp7/explainegy-nextjs.git
				synced 2025-10-29 21:02:13 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Request, Response } from "express";
 | |
| import prisma from "../../../lib/prisma";
 | |
| import { Prisma } from "@prisma/client";
 | |
| import { Article, Category } from "@prisma/client";
 | |
| import { ResponseError } from "../../../types/responseErrors";
 | |
| import { PostArticle } from "../../../types/postData";
 | |
| import { isValidText } from "../../../validators";
 | |
| import { formatTextToUrlName } from "../../../utils";
 | |
| import { json } from "stream/consumers";
 | |
| 
 | |
| export default async function handler(req: Request, res: Response) {
 | |
|   res.setHeader("Content-Type", "application/json");
 | |
| 
 | |
|   const postData: any = req.body;
 | |
|   console.log(postData);
 | |
|   if (!isValidText(postData.title)) {
 | |
|     res.send(JSON.stringify({ target: "title", error: "Not a valid title" }));
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   if (!isValidText(postData.introduction)) {
 | |
|     res.send(JSON.stringify({ target: "introduction", error: "Not a valid introduction" }));
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   if (!postData.categoryId) {
 | |
|     res.send(JSON.stringify({ target: "category", error: "Category is required" }));
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   postData.name = formatTextToUrlName(postData.title);
 | |
|   prisma.article
 | |
|     .create({ data: postData, include: { category: true } })
 | |
|     .then(
 | |
|       (data) => {
 | |
|         res.send(JSON.stringify({ success: true, data: data }));
 | |
|       },
 | |
|       (errorReason) => {
 | |
|         if (errorReason.code === "P2002") {
 | |
|           res.send(JSON.stringify({ target: errorReason.meta.target[0], error: "Already exists" }));
 | |
|         }
 | |
|       }
 | |
|     )
 | |
|     .catch((err) => {
 | |
|       console.error(err);
 | |
|       res.sendStatus(500).end();
 | |
|     });
 | |
| }
 | 
