Update grade route.ts to Next 13
This commit is contained in:
parent
ecbd14a06c
commit
4e7efb327f
|
@ -1,25 +1,23 @@
|
||||||
import type { NextApiRequest, NextApiResponse } from 'next'
|
import {NextResponse} from "next/server";
|
||||||
|
|
||||||
import prisma from '@lib/prisma';
|
import prisma from '@lib/prisma';
|
||||||
|
|
||||||
interface IBody {
|
interface IBody {
|
||||||
key: string
|
key: string
|
||||||
grade: number
|
grade: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
export async function POST(req: Request){
|
||||||
const body = req.body as IBody
|
const body = await req.json() as IBody
|
||||||
if (req.method === 'POST') {
|
await prisma.grade.findFirst({where: {key: body.key}}).then(async (grade) => {
|
||||||
// Process a POST request
|
if (grade) {
|
||||||
await prisma.grade.findFirst({where: {key: body.key}}).then(async (grade) => {
|
await prisma.grade.create({data: {test: 1, grade: body.grade, key: body.key}})
|
||||||
if (grade) {
|
return new NextResponse(
|
||||||
await prisma.grade.create({data: {test: 1, grade: body.grade, key: body.key}})
|
JSON.stringify({message: 'Grade updated', cookie: 'voted=true'}), {status: 200}
|
||||||
res.status(200).json({message: 'Grade updated', cookie: 'voted=true'})
|
)
|
||||||
} else {
|
} else {
|
||||||
res.status(404).json({message: 'Key not found'})
|
return new NextResponse(
|
||||||
}
|
JSON.stringify({message: 'Key not found'}), {status: 404}
|
||||||
})
|
)
|
||||||
} else {
|
}
|
||||||
// Handle any other HTTP method
|
})
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
"use server";
|
||||||
|
import {
|
||||||
|
Chart as ChartJS,
|
||||||
|
CategoryScale,
|
||||||
|
LinearScale,
|
||||||
|
Tooltip,
|
||||||
|
PointElement,
|
||||||
|
LineElement,
|
||||||
|
} from "chart.js";
|
||||||
|
import { Line } from "react-chartjs-2";
|
||||||
|
|
||||||
|
// Register ChartJS components using ChartJS.register
|
||||||
|
ChartJS.register(
|
||||||
|
CategoryScale,
|
||||||
|
LinearScale,
|
||||||
|
PointElement,
|
||||||
|
LineElement,
|
||||||
|
Tooltip
|
||||||
|
);
|
||||||
|
|
||||||
|
import { PrismaClient } from '@prisma/client'
|
||||||
|
|
||||||
|
const prisma = new PrismaClient()
|
||||||
|
|
||||||
|
function getGrades() {
|
||||||
|
return prisma.grade.findMany()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const results = async () => {
|
||||||
|
const grades = await getGrades()
|
||||||
|
const gradesArray = grades.map(grade => grade.grade.toString())
|
||||||
|
const allGrades = ["1", "1,5", "2", "2,5", "3", "3,5", "4", "4,5", "5", "5,5", "6"]
|
||||||
|
const gradesCount = allGrades.map(grade => gradesArray.filter(g => g === grade).length)
|
||||||
|
console.log(grades)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Line
|
||||||
|
data={{
|
||||||
|
labels: allGrades,
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
data: gradesCount,
|
||||||
|
backgroundColor: "purple",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default results;
|
|
@ -9,9 +9,11 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/client": "^5.6.0",
|
"@prisma/client": "^5.6.0",
|
||||||
|
"chart.js": "^4.4.0",
|
||||||
"next": "14.0.3",
|
"next": "14.0.3",
|
||||||
"prisma": "^5.6.0",
|
"prisma": "^5.6.0",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
|
"react-chartjs-2": "^5.2.0",
|
||||||
"react-dom": "^18",
|
"react-dom": "^18",
|
||||||
"socket.io": "^4.7.2",
|
"socket.io": "^4.7.2",
|
||||||
"socket.io-client": "^4.7.2"
|
"socket.io-client": "^4.7.2"
|
||||||
|
@ -198,6 +200,11 @@
|
||||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@kurkle/color": {
|
||||||
|
"version": "0.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
|
||||||
|
"integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
|
||||||
|
},
|
||||||
"node_modules/@next/env": {
|
"node_modules/@next/env": {
|
||||||
"version": "14.0.3",
|
"version": "14.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.3.tgz",
|
||||||
|
@ -1079,6 +1086,17 @@
|
||||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/chart.js": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.0.tgz",
|
||||||
|
"integrity": "sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@kurkle/color": "^0.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"pnpm": ">=7"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/chokidar": {
|
"node_modules/chokidar": {
|
||||||
"version": "3.5.3",
|
"version": "3.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||||
|
@ -3632,6 +3650,15 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/react-chartjs-2": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==",
|
||||||
|
"peerDependencies": {
|
||||||
|
"chart.js": "^4.1.1",
|
||||||
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/react-dom": {
|
"node_modules/react-dom": {
|
||||||
"version": "18.2.0",
|
"version": "18.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
|
||||||
|
|
|
@ -10,9 +10,11 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/client": "^5.6.0",
|
"@prisma/client": "^5.6.0",
|
||||||
|
"chart.js": "^4.4.0",
|
||||||
"next": "14.0.3",
|
"next": "14.0.3",
|
||||||
"prisma": "^5.6.0",
|
"prisma": "^5.6.0",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
|
"react-chartjs-2": "^5.2.0",
|
||||||
"react-dom": "^18",
|
"react-dom": "^18",
|
||||||
"socket.io": "^4.7.2",
|
"socket.io": "^4.7.2",
|
||||||
"socket.io-client": "^4.7.2"
|
"socket.io-client": "^4.7.2"
|
||||||
|
|
Loading…
Reference in New Issue