Skip to content

Commit 7fe5ed1

Browse files
authored
Merge pull request #4 from metakgp/harsh-changes
Bug Fixes and No Results Message
2 parents e61eec2 + 2e84b02 commit 7fe5ed1

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

backend/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func library(w http.ResponseWriter, r *http.Request) {
7777
}
7878
defer rows.Close()
7979

80-
var qps []QuestionPaper
80+
var qps []QuestionPaper = make([]QuestionPaper, 0)
8181
for rows.Next() {
8282
var qp = QuestionPaper{}
8383
err := rows.Scan(&qp.ID, &qp.CourseCode, &qp.CourseName, &qp.Year, &qp.Exam, &qp.FileLink, &qp.FromLibrary)
@@ -125,7 +125,7 @@ func search(w http.ResponseWriter, r *http.Request) {
125125
}
126126
defer rows.Close()
127127

128-
var qps []QuestionPaper
128+
var qps []QuestionPaper = make([]QuestionPaper, 0)
129129
for rows.Next() {
130130
var qp = QuestionPaper{}
131131
err := rows.Scan(&qp.ID, &qp.CourseCode, &qp.CourseName, &qp.Year, &qp.Exam, &qp.FileLink, &qp.FromLibrary)

frontend/src/components/SearchResults.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@ import type { SearchResult } from "../types/types";
33

44
type Props = {
55
results: SearchResult[];
6+
noResultsFound: boolean;
67
};
78

89
const SearchResults: Component<Props> = (props) => {
910
return (
1011
<div class="search-results">
12+
{props.noResultsFound && <p>No results found. Try a different query.</p>}
1113
<For each={props.results}>
1214
{(result) => (
1315
<div class="result-card">
1416
<p>Course Name: {decodeURIComponent(result.course_name)}</p>
1517
<p>Year: {result.year}</p>
16-
<p>Semester: {result.exam}</p>
18+
<p>Exam: {result.exam}</p>
1719
<a href={result.filelink} target="_blank" rel="noopener noreferrer">
1820
Download File
1921
</a>

frontend/src/components/searchForm.tsx

+11-7
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ function CourseSearchForm() {
77
// Create signals for each form input
88
const [courseName, setCourseName] = createSignal("");
99
const [year, setYear] = createSignal<number>(0);
10-
const [semester, setSemester] = createSignal("");
10+
const [exam, setExam] = createSignal("");
1111
const [years, setYears] = createSignal<number[]>([]);
1212
const [searchResults, setSearchResults] = createSignal<SearchResult[]>([]);
13+
const [noResultsFound, setNoResultsFound] = createSignal<boolean>(false);
1314

1415
async function fetchYears() {
1516
try {
@@ -29,19 +30,22 @@ function CourseSearchForm() {
2930
const handleSubmit = async (event: any) => {
3031
event.preventDefault(); // Prevent the default form submit action
3132

32-
console.log("Form submitted!", courseName(), year(), semester());
33+
console.log("Form submitted!", courseName(), year(), exam());
3334

3435
const params = new URLSearchParams();
3536
if (courseName()) params.append("course", courseName());
3637
if (year()) params.append("year", year().toString());
37-
if (semester()) params.append("semester", semester());
38+
if (exam()) params.append("exam", exam());
3839

3940
try {
4041
const response = await fetch(`${import.meta.env.VITE_BACKEND_URL}/search?${params}`, {
4142
method: "GET", // GET request
4243
});
44+
4345
const data: SearchResult[] = await response.json();
46+
4447
setSearchResults(data); // Handle the response data
48+
setNoResultsFound(data.length === 0); // Show a message if no results are found
4549
} catch (error) {
4650
console.error("Error fetching data:", error);
4751
}
@@ -64,16 +68,16 @@ function CourseSearchForm() {
6468
</select>
6569
</div>
6670
<div>
67-
<label for="semester">Semester:</label>
68-
<select id="semester" value={semester()} onInput={(e) => setSemester(e.target.value)}>
69-
<option value="">Select a semester</option>
71+
<label for="exam">Exam:</label>
72+
<select id="exam" value={exam()} onInput={(e) => setExam(e.target.value)}>
73+
<option value="">Select an exam</option>
7074
<option value="Mid Sem">Mid Sem</option>
7175
<option value="End Sem">End Sem</option>
7276
</select>
7377
</div>
7478
<button type="submit">Search</button>
7579
</form>
76-
<SearchResults results={searchResults()} />
80+
<SearchResults results={searchResults()} noResultsFound={noResultsFound()} />
7781
</div>
7882
);
7983
}

0 commit comments

Comments
 (0)