Skip to content

Commit

Permalink
fixed bug with fetching certain books
Browse files Browse the repository at this point in the history
  • Loading branch information
MohammedArab1 committed Jul 1, 2024
1 parent cd4a703 commit cfebcc9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 18 deletions.
32 changes: 16 additions & 16 deletions API/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ app.get("/api/query", queryHandler(HadithModel))
app.get("/api/v2/query", queryHandler(HadithModelV2))

//The following endpoint takes a query and fetches from a particular book. Can handle both english and arabic queries
var queryPerBookHandler = (model) =>{
var queryPerBookHandler = (model, bookModel) =>{
return async (request, response) => {
const listOfBooks = await utils.returnBookIds();
const listOfBooks = await utils.returnBookIds(bookModel);
const query = request.query.q;
if (!query) {
const error = {
Expand Down Expand Up @@ -261,7 +261,7 @@ var queryPerBookHandler = (model) =>{
* schema:
* type: string
*/
app.get("/api/query/:bookId", queryPerBookHandler(HadithModel))
app.get("/api/query/:bookId", queryPerBookHandler(HadithModel,BookNamesModel))

/**
* @openapi
Expand All @@ -288,7 +288,7 @@ app.get("/api/query/:bookId", queryPerBookHandler(HadithModel))
* schema:
* type: string
*/
app.get("/api/v2/query/:bookId", queryPerBookHandler(HadithModelV2))
app.get("/api/v2/query/:bookId", queryPerBookHandler(HadithModelV2, BookNamesModelV2))


//Returns all the hadiths from a specific book (NOT SURE THIS IS NEEDED ANYMORE FOR V2.)
Expand All @@ -309,9 +309,9 @@ app.get("/api/v2/query/:bookId", queryPerBookHandler(HadithModelV2))
// });

//Returns all the hadiths from a specific book
var bookHandler = (model) => {
var bookHandler = (model, bookModel) => {
return async (request, response) => {
const listOfBooks = await utils.returnBookIds();
const listOfBooks = await utils.returnBookIds(bookModel);
if (!listOfBooks.includes(request.params.bookId)) {
return response.status(400).json({ error: invalidBook });
} else {
Expand Down Expand Up @@ -346,7 +346,7 @@ var bookHandler = (model) => {
* schema:
* type: string
*/
app.get("/api/:bookId",bookHandler(HadithModel))
app.get("/api/:bookId",bookHandler(HadithModel, BookNamesModel))
/**
* @openapi
* /api/v2/{bookId}:
Expand All @@ -366,12 +366,12 @@ app.get("/api/:bookId",bookHandler(HadithModel))
* schema:
* type: string
*/
app.get("/api/v2/:bookId",bookHandler(HadithModelV2))
app.get("/api/v2/:bookId",bookHandler(HadithModelV2, BookNamesModelV2))

// Returns a random hadith from a given book
var randomBookHadithHandler = (model) => {
var randomBookHadithHandler = (model, bookModel) => {
return async (request, response) => {
const listOfBooks = await utils.returnBookIds();
const listOfBooks = await utils.returnBookIds(bookModel);
const filter = { bookId: request.params.bookId };
if (!listOfBooks.includes(request.params.bookId)) {
return response.status(400).json({ error: invalidBook });
Expand Down Expand Up @@ -403,7 +403,7 @@ var randomBookHadithHandler = (model) => {
* schema:
* type: string
*/
app.get("/api/:bookId/random",randomBookHadithHandler(HadithModel))
app.get("/api/:bookId/random",randomBookHadithHandler(HadithModel, BookNamesModel))
/**
* @openapi
* /api/v2/{bookId}/random:
Expand All @@ -423,12 +423,12 @@ app.get("/api/:bookId/random",randomBookHadithHandler(HadithModel))
* schema:
* type: string
*/
app.get("/api/v2/:bookId/random",randomBookHadithHandler(HadithModelV2))
app.get("/api/v2/:bookId/random",randomBookHadithHandler(HadithModelV2, BookNamesModelV2))

// returns a specific hadith (not very useful in my opinion but needs refining)
var oneHadithHandler = (model) => {
var oneHadithHandler = (model, bookModel) => {
return async (request, response) => {
const listOfBooks = await utils.returnBookIds();
const listOfBooks = await utils.returnBookIds(bookModel);
if (isNaN(request.params.id)) {
return response.status(400).json({ error: "Invalid Id" });
} else {
Expand Down Expand Up @@ -472,7 +472,7 @@ var oneHadithHandler = (model) => {
* schema:
* type: string
*/
app.get("/api/:bookId/:id",oneHadithHandler(HadithModel))
app.get("/api/:bookId/:id",oneHadithHandler(HadithModel, BookNamesModel))

/**
* @openapi
Expand All @@ -499,7 +499,7 @@ app.get("/api/:bookId/:id",oneHadithHandler(HadithModel))
* schema:
* type: string
*/
app.get("/api/v2/:bookId/:id",oneHadithHandler(HadithModelV2))
app.get("/api/v2/:bookId/:id",oneHadithHandler(HadithModelV2, BookNamesModelV2))

const options = {
definition: {
Expand Down
5 changes: 3 additions & 2 deletions API/src/utils.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
const BookNamesModel = require("../../V1/DB/models/bookName")
const BookNamesModelV2 = require("../../V2/DB/models/bookNameV2")

const escapeRegExp = (string) => {
return string.toString().replace(/[.*+?^${}|()[\]\\]/g, "\\$&"); // $& means the whole matched string
};
const returnBookIds = async () => {
const bookNames = await BookNamesModel.find({});
const returnBookIds = async (model) => {
const bookNames = await model.find({});
return bookNames.map((book) => {
return book["bookId"];
});
Expand Down

0 comments on commit cfebcc9

Please sign in to comment.