-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #22 from Hack4Impact-UMD/responses-endpoints
Add 3 Response endpoints
- Loading branch information
Showing
3 changed files
with
87 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import { NextRequest, NextResponse } from 'next/server'; | ||
import { getResponseByID } from '@/lib/firebase/database/response'; | ||
import { Response } from '@/types/survey-types'; | ||
|
||
export async function GET(req: NextRequest, { params }: { params: { responseId: string } }) { | ||
const { responseId } = params; | ||
console.log('responseId:', responseId); | ||
|
||
try { | ||
const response: Response | null = await getResponseByID(responseId); | ||
if (response) { | ||
return NextResponse.json(response, { status: 200 }); | ||
} else { | ||
return NextResponse.json({ message: 'Response not found' }, { status: 404 }); | ||
} | ||
} catch (error) { | ||
console.error('Error getting response by ID:', error); | ||
return NextResponse.json({ message: 'Internal Server Error' }, { status: 500 }); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
// pages/route.tsx | ||
|
||
import { NextRequest, NextResponse } from 'next/server'; | ||
import { getAllResponses, createResponse } from '@/lib/firebase/database/response'; | ||
import { Response } from '@/types/survey-types'; | ||
|
||
export async function GET(req: NextRequest) { | ||
try { | ||
const allResponses = await getAllResponses(); | ||
return NextResponse.json(allResponses, { status: 200 }); | ||
} catch (error) { | ||
console.error('Error getting responses:', error); | ||
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 }); | ||
} | ||
} | ||
|
||
export async function POST(req: NextRequest) { | ||
try { | ||
const newResponse: Response = await req.json(); | ||
await createResponse(newResponse); | ||
return NextResponse.json({ message: 'Response created successfully' }, { status: 201 }); | ||
} catch (error) { | ||
console.error('Error creating response:', error); | ||
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 }); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import { db } from "../firebaseConfig"; | ||
import { collection, getDocs, getDoc, doc, setDoc } from 'firebase/firestore'; | ||
import { Response } from '@/types/survey-types'; | ||
|
||
// GET all responses | ||
export async function getAllResponses() { | ||
try { | ||
const responsesSnapshot = await getDocs(collection(db, 'responses')); | ||
const allResponses: Response[] = []; | ||
responsesSnapshot.forEach((doc) => { | ||
allResponses.push(doc.data() as Response); | ||
}); | ||
return allResponses; | ||
} catch (error) { | ||
console.error('Error getting responses:', error); | ||
throw new Error('unable to get responses'); | ||
} | ||
} | ||
|
||
export async function createResponse(newResponse: Response) { | ||
try { | ||
await setDoc(doc(db, 'responses', newResponse.responseId), newResponse); | ||
} catch (error) { | ||
console.error('Error creating response:', error); | ||
throw new Error('unable to create response'); | ||
} | ||
} | ||
export async function getResponseByID(responseId: string): Promise<Response | null> { | ||
try { | ||
const responseDoc = await getDoc(doc(db, 'responses', responseId)); | ||
if (responseDoc.exists()) { | ||
return responseDoc.data() as Response; | ||
} else { | ||
return null; | ||
} | ||
} catch (error) { | ||
console.error('Error getting response by ID:', error); | ||
throw new Error('unable to get response by id'); | ||
} | ||
} |