Skip to content

Commit 6007c71

Browse files
Demo (#7)
* Made database interactive so voters update database * Fixed fetch api call on home page * Fixed all fetch calls * fix build error --------- Co-authored-by: FlyingChilli04 <lmaisnam2@gmail.com>
1 parent 4b683ad commit 6007c71

File tree

18 files changed

+169
-117
lines changed

18 files changed

+169
-117
lines changed

overload/package-lock.json

Lines changed: 47 additions & 64 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

overload/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@nextui-org/react": "^2.2.9",
1313
"@prisma/client": "^5.5.2",
1414
"framer-motion": "^10.16.16",
15-
"next": "13.5.6",
15+
"next": "^14.0.5-canary.56",
1616
"prisma": "^5.5.2",
1717
"react": "^18",
1818
"react-dom": "^18"

overload/prisma/schema.prisma

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
generator client {
55
provider = "prisma-client-js"
6+
previewFeatures = ["referentialIntegrity"]
67
}
78

89
datasource db {

overload/src/app/api/course-details/[courseCode]/route.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export async function GET(request: NextRequest, { params }: { params: { courseCo
1111
courseCode: courseCode,
1212
},
1313
});
14-
1514
if (course) {
1615
return NextResponse.json(course, { status: 200 });
1716
} else {
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { NextRequest, NextResponse } from 'next/server';
2+
import prisma from '../../../../prisma/client';
3+
4+
// Update doom voters (still under progress)
5+
export async function PUT(req: Request) {
6+
if (req.method === "PUT") {
7+
try {
8+
// const data = await req.body.json();
9+
const body = await req.json();
10+
let { doomness, courseCode } = body;
11+
// Find course details
12+
const course = await prisma.course.findUnique({
13+
where: {
14+
courseCode: courseCode,
15+
},
16+
});
17+
// Update course details
18+
if (course?.doomness !== null) {
19+
let newDoomness: number = (parseInt(doomness) + parseInt((course as any).doomness))/2;
20+
const updatedCourse = await prisma.course.update({
21+
where: { courseCode: courseCode },
22+
data: {
23+
doomness: newDoomness,
24+
doomnessVoters: (parseInt((course as any).doomnessVoters) + 1)
25+
}
26+
});
27+
return NextResponse.json(updatedCourse, { status: 200 });
28+
} else {
29+
return NextResponse.json(
30+
{ error: 'Course not found' },
31+
{ status: 404 }
32+
);
33+
}
34+
} catch (error) {
35+
return NextResponse.json(
36+
{ error: 'Internal server error' },
37+
{ status: 500 }
38+
);
39+
}
40+
} else {
41+
return NextResponse.json(
42+
{ error: 'Course code is empty' },
43+
{ status: 400 }
44+
);
45+
}
46+
}

overload/src/app/components/SearchBar.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ export const SearchBar = ({ filterOn, setFilterOn }: SearchBarProps) => {
2929

3030
React.useEffect(() => {
3131
// Fetch the term list
32-
fetch('http://localhost:3000/api/home', { cache: 'no-store' }) // Fetch terms
32+
fetch('/api/home', { cache: 'no-store' }) // Fetch terms
3333
.then((response) => response.json()) // turn data from promise into a json file so we can use data
3434
.then((data) => {
3535
setDataList(data);
36+
console.log(data)
3637
}) // set data using setData hook
3738
.catch((error) => {
3839
// if promise not fulfilled
@@ -93,6 +94,3 @@ export const SearchBar = ({ filterOn, setFilterOn }: SearchBarProps) => {
9394
</div>
9495
);
9596
};
96-
97-
// pull filter
98-
// for each thingy

overload/src/app/components/courseOption.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client';
22
import { Button } from '@nextui-org/react';
3-
import { Course } from '../home/page';
3+
import { Course } from '../types';
44

55
type CourseOptionProps = {
66
course: Course;
@@ -12,7 +12,7 @@ export const CourseOption = ({
1212
}: CourseOptionProps) => {
1313
return (
1414
<div
15-
className=" flex justify-center bg-white m-5 cursor-pointer"
15+
className=" flex justify-center bg-white m-5 cursor-pointer rounded-md"
1616
onClick={() => handleSelectCourse(course)}
1717
>
1818
{course.courseCode}: {course.courseName}

overload/src/app/components/coursesList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use client';
2-
import { Course } from '../home/page';
2+
import { Course } from '../types';
33
import CourseOption from './courseOption';
44

55
type CoursesListProps = {

overload/src/app/components/selectedCourse.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { Course } from '../home/page';
2-
31
type SelectedCourseProps = {
42
courseCode: string;
53
courseName: string;
@@ -13,7 +11,7 @@ export const SelectedCourse = ({
1311
}: SelectedCourseProps) => {
1412
return (
1513
<div
16-
className="bg-white w-[100%] m-3 rounded-md cursor-pointer"
14+
className="bg-white w-[100%] m-3 p-1 rounded-md cursor-pointer"
1715
onClick={() => handleDeselectCourse(courseCode)}
1816
>
1917
{courseCode}: {courseName}

overload/src/app/components/selectedCourses.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use client';
2-
import { Course } from '../home/page';
2+
import { Course } from '../types';
33
import SelectedCourse from './selectedCourse';
44
import Dropdown from './termSelectDropDown';
55

@@ -28,7 +28,7 @@ export const SelectedCourses = ({
2828
<div className="flex justify-center pb-8">
2929
<Dropdown handleSelectTerm={handleSelectTerm} />
3030
</div>
31-
<div className="flex flex-col items-center p-8 bg-black ">{courses}</div>
31+
<div className="flex flex-col items-center p-8 bg-black">{courses}</div>
3232
</div>
3333
);
3434
};

0 commit comments

Comments
 (0)