mirror of
https://github.com/Floriansylvain/SnippetsManager.git
synced 2026-08-19 11:43:15 +02:00
Category routes implementation
This commit is contained in:
@@ -6,6 +6,7 @@ import cors from 'cors'
|
|||||||
import cookieParser from 'cookie-parser'
|
import cookieParser from 'cookie-parser'
|
||||||
import { getJwtSecret } from './utils/jwt.js'
|
import { getJwtSecret } from './utils/jwt.js'
|
||||||
import sessionRouter from './routers/session.js'
|
import sessionRouter from './routers/session.js'
|
||||||
|
import categoryRouter from './routers/category.js'
|
||||||
|
|
||||||
const authMiddleware: RequestHandler = (req, res, next) => {
|
const authMiddleware: RequestHandler = (req, res, next) => {
|
||||||
const token = req.cookies.jwt
|
const token = req.cookies.jwt
|
||||||
@@ -57,6 +58,7 @@ export function initServer(): express.Express {
|
|||||||
|
|
||||||
appRouter.use('/session/', sessionRouter)
|
appRouter.use('/session/', sessionRouter)
|
||||||
appRouter.use('/user/', authMiddleware, userRouter)
|
appRouter.use('/user/', authMiddleware, userRouter)
|
||||||
|
appRouter.use('/category/', authMiddleware, categoryRouter)
|
||||||
|
|
||||||
app.use('/v1/', appRouter)
|
app.use('/v1/', appRouter)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
import { Category, PrismaClient } from "@prisma/client"
|
||||||
|
import express, { RequestHandler } from "express"
|
||||||
|
import { z } from "zod"
|
||||||
|
import { parseJwtUserId } from "./user.js"
|
||||||
|
|
||||||
|
const categoryRouter = express.Router()
|
||||||
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
|
const categoryData = z.object({
|
||||||
|
name: z.string().max(50)
|
||||||
|
}).required()
|
||||||
|
|
||||||
|
const categoryGet: RequestHandler = async (req, res) => {
|
||||||
|
let category: Category | null = null
|
||||||
|
|
||||||
|
try {
|
||||||
|
const categoryGet = categoryData.parse(req.body)
|
||||||
|
category = await prisma.category.findFirst({ where: { name: categoryGet.name } })
|
||||||
|
} catch (error: any) {
|
||||||
|
res.status(400).json({ message: (error.issues ?? error) })
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({ category })
|
||||||
|
}
|
||||||
|
|
||||||
|
const categoryPost: RequestHandler = async (req, res) => {
|
||||||
|
const userId = parseJwtUserId(req.cookies.jwt)
|
||||||
|
if (userId === undefined) {
|
||||||
|
res.status(400).json({ message: 'Incorrect JWT payload.' })
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const newCategory = categoryData.parse(req.body)
|
||||||
|
prisma.category.create({
|
||||||
|
data: {
|
||||||
|
name: newCategory.name,
|
||||||
|
user_id: userId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} catch (error: any) {
|
||||||
|
res.status(400).json({ message: (error.issues ?? error) })
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({ message: 'Category successfully added.' })
|
||||||
|
}
|
||||||
|
|
||||||
|
categoryRouter.get('/', categoryGet)
|
||||||
|
categoryRouter.post('/', categoryPost)
|
||||||
|
|
||||||
|
export default categoryRouter
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
import { Language, PrismaClient } from ".prisma/client"
|
|
||||||
import express, { RequestHandler } from "express"
|
|
||||||
import { z } from "zod"
|
|
||||||
|
|
||||||
const langRouter = express.Router()
|
|
||||||
const prisma = new PrismaClient()
|
|
||||||
|
|
||||||
const newLang = z.object({
|
|
||||||
name: z.string()
|
|
||||||
})
|
|
||||||
|
|
||||||
const langRouterGet: RequestHandler = (res, req, next) => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const langRouterPost: RequestHandler = (res, req, next) => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
langRouter.get('/', langRouterGet)
|
|
||||||
langRouter.post('/', langRouterPost)
|
|
||||||
|
|
||||||
export default langRouter
|
|
||||||
+1
-1
@@ -11,7 +11,7 @@ const editableUserData = z.object({
|
|||||||
picture_path: z.string().optional()
|
picture_path: z.string().optional()
|
||||||
})
|
})
|
||||||
|
|
||||||
function parseJwtUserId(jwtoken: string): number | undefined {
|
export function parseJwtUserId(jwtoken: string): number | undefined {
|
||||||
const payload = jwt.decode(jwtoken)
|
const payload = jwt.decode(jwtoken)
|
||||||
if (payload == undefined) {
|
if (payload == undefined) {
|
||||||
return undefined
|
return undefined
|
||||||
|
|||||||
Reference in New Issue
Block a user