Skip to content

Commit c54c392

Browse files
authored
Merge pull request #53 from OmAnand857/main
Integrated Backend for Rateprof Page
2 parents 6652517 + 03fca8f commit c54c392

File tree

3 files changed

+274
-151
lines changed

3 files changed

+274
-151
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import { firestore as db } from '../../../../utils/firebaseInit';
2+
import { collection, getDocs, addDoc, updateDoc, deleteDoc, doc , increment } from 'firebase/firestore';
3+
import type { NextApiRequest, NextApiResponse } from 'next';
4+
5+
const COLLECTION_NAME = 'profReviews';
6+
7+
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
8+
switch (req.method) {
9+
case 'GET':
10+
try {
11+
console.log("Fetching all reviews...");
12+
const reviewsRef = collection(db, COLLECTION_NAME);
13+
const snapshot = await getDocs(reviewsRef);
14+
const reviews = snapshot.docs.map(doc => ({
15+
id: doc.id,
16+
...doc.data()
17+
}));
18+
res.status(200).json({ reviews });
19+
} catch (error) {
20+
console.error('Error fetching reviews:', error);
21+
res.status(500).json({ error: 'Failed to fetch reviews' });
22+
}
23+
break;
24+
25+
case 'POST':
26+
try {
27+
const body = req.body;
28+
const reviewsRef = collection(db, COLLECTION_NAME);
29+
const docRef = await addDoc(reviewsRef, {
30+
...body,
31+
date: new Date().toISOString().split('T')[0],
32+
upvotes: 0,
33+
comments: []
34+
});
35+
res.status(200).json({ id: docRef.id, ...body });
36+
} catch (error) {
37+
console.error('Error adding review:', error);
38+
res.status(500).json({ error: 'Failed to add review' });
39+
}
40+
break;
41+
42+
case 'PUT':
43+
try {
44+
const body = req.body;
45+
const { id, ...updateData } = body;
46+
const reviewRef = doc(db, COLLECTION_NAME, id);
47+
48+
await updateDoc(reviewRef, {
49+
upvotes: increment(1),
50+
...updateData
51+
});
52+
53+
res.status(200).json({ success: true });
54+
} catch (error) {
55+
console.error('Error updating review:', error);
56+
res.status(500).json({ error: 'Failed to update review' });
57+
}
58+
break;
59+
60+
61+
case 'DELETE':
62+
try {
63+
const { id } = req.body;
64+
const reviewRef = doc(db, COLLECTION_NAME, id);
65+
await deleteDoc(reviewRef);
66+
res.status(200).json({ success: true });
67+
} catch (error) {
68+
console.error('Error deleting review:', error);
69+
res.status(500).json({ error: 'Failed to delete review' });
70+
}
71+
break;
72+
73+
default:
74+
res.status(405).json({ error: 'Method Not Allowed' });
75+
}
76+
};
77+
78+
export default handler;

src/pages/courses/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export default function Courses() {
103103
}, [])
104104

105105
return (
106-
<div className={`w-full bg-white flex flex-col`}>
106+
<div className={`w-full bg-white flex flex-col py-48`}>
107107
{user && (
108108
<Modal
109109
header="Add New Course"
@@ -141,7 +141,7 @@ export default function Courses() {
141141
href="/favicon.ico"
142142
/>
143143
</Head>
144-
<div className="grid grid-cols-5 gap-0 justify-center py-48 px-5 md:px-14 space-y-8 min-h-screen">
144+
<div className="grid grid-cols-5 gap-0 justify-center c px-5 md:px-14 space-y-8 min-h-screen">
145145
<div className="col-span-5 flex flex-row items-center gap-4 justify-between">
146146
<h3 className="font-bold text-xl md:text-3xl">Courses</h3>
147147
{adminStatus && (

0 commit comments

Comments
 (0)