Added POST and DELETE routes on Snippets

This commit is contained in:
Florian Sylvain
2023-02-01 23:40:33 +01:00
parent b1f126b674
commit 0e5af06915
3 changed files with 108 additions and 38 deletions
+51 -37
View File
@@ -6,11 +6,17 @@ import { userIdMiddleware } from "./user.js"
const snippetRouter = express.Router()
const prisma = new PrismaClient()
const snippetData = z.object({
const snippetPostParser = z.object({
code: z.string(),
title: z.string().max(50)
title: z.string().max(50),
language: z.string().max(32)
}).required()
const snippetDeleteParser = z.object({
id: z.number(),
}).required()
// TODO Ajouter paramètres sur la requête pour rechercher des snippets
// TODO Ajouter pagination
const snippetGet: RequestHandler = async (req, res) => {
@@ -23,50 +29,58 @@ const snippetGet: RequestHandler = async (req, res) => {
return;
}
res.json({ categories: snippets })
res.json({ snippets })
}
// const snippetPost: RequestHandler = async (req, res) => {
// try {
// const newSnippet = snippetData.parse(req.body)
// await prisma.snippet.create({
// data: {
// code: newSnippet.code,
// title: newSnippet.code,
// user_id: req.body.userId
// }
// })
// } catch (error: any) {
// res.status(400).json({ message: (error.issues ?? error) })
// return;
// }
const snippetPost: RequestHandler = async (req, res) => {
try {
const newSnippet = snippetPostParser.parse(req.body)
await prisma.snippet.create({
data: {
title: newSnippet.title,
code: newSnippet.code,
user: {
connect: { id: req.body.userId }
},
language: {
connectOrCreate: {
where: { name: newSnippet.language },
create: { name: newSnippet.language }
}
}
}
})
} catch (error: any) {
res.status(400).json({ message: (error.issues ?? error) })
return;
}
// res.json({ message: 'Snippet successfully added.' })
// }
res.json({ message: 'Snippet successfully added.' })
}
// const snippetDelete: RequestHandler = async (req, res) => {
// let deleted: Prisma.BatchPayload
const snippetDelete: RequestHandler = async (req, res) => {
let deleted: Prisma.BatchPayload
// try {
// const snippetToDel = snippetData.parse(req.body)
// deleted = await prisma.snippet.deleteMany({
// where: {
try {
const snippetToDel = snippetDeleteParser.parse(req.body)
deleted = await prisma.category.deleteMany({
where: {
id: snippetToDel.id,
user_id: req.body.userId
}
})
} catch (error: any) {
res.status(400).json({ message: (error.issues ?? error) })
return;
}
// user_id: req.body.userId
// }
// })
// } catch (error: any) {
// res.status(400).json({ message: (error.issues ?? error) })
// return;
// }
// res.json({ message: `${deleted.count} category / categories successfully deleted.` })
// }
res.json({ message: `${deleted.count} snippet(s) successfully deleted.` })
}
// TODO update snippet
snippetRouter.get('/', userIdMiddleware, snippetGet)
// snippetRouter.post('/', userIdMiddleware, snippetPost)
// snippetRouter.delete('/', userIdMiddleware, snippetDelete)
snippetRouter.post('/', userIdMiddleware, snippetPost)
snippetRouter.delete('/', userIdMiddleware, snippetDelete)
export default snippetRouter