Skip to content

Commit

Permalink
fix: search endpoint now uses Zuri core's filtering
Browse files Browse the repository at this point in the history
  • Loading branch information
omzi committed Oct 13, 2021
1 parent 71dc1ee commit ea4b55d
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 23 deletions.
14 changes: 6 additions & 8 deletions backend/controllers/file.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ exports.fileUploadStatus = (req, res) => {
} else {
return res.status(400).send(appResponse(null, 'Invalid "Content-Range" format', false, { credentials: { ...req.query }}));
}
};
}


exports.fileUpload = async (req, res) => {
const contentRange = req.headers['content-range'];
Expand All @@ -63,11 +64,7 @@ exports.fileUpload = async (req, res) => {
const rangeEnd = Number(match[2]);
const fileSize = Number(match[3]);

if (
rangeStart >= fileSize ||
rangeStart >= rangeEnd ||
rangeStart >= rangeEnd
) {
if (rangeStart >= fileSize || rangeStart >= rangeEnd || rangeStart >= rangeEnd) {
throw new BadRequestError('Invalid "Content-Range" provided');
}

Expand Down Expand Up @@ -117,7 +114,7 @@ exports.fileUpload = async (req, res) => {
addActivity(userObj, 'added', `${file.fileName}`),
RealTime.publish('newFile', file)
]);
// normal response without data.

return res.status(200).send(appResponse('File uploaded successfully!', file, true));
});
})
Expand All @@ -133,7 +130,8 @@ exports.fileUpload = async (req, res) => {
});

req.pipe(busboy);
};
}


exports.cropImage = async (req, res) => {
// Upload cropped file to cloudinary
Expand Down
40 changes: 27 additions & 13 deletions backend/controllers/search.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,21 @@ const DatabaseOps = require('../utils/database.helper');
const File = new DatabaseOps('File');
const Folder = new DatabaseOps('Folder');
const appResponse = require('../utils/appResponse');
const { BadRequestError } = require('../utils/appError');


exports.searchAndFilterFiles = async (req, res) => {
// In this route, we will search files and filter them
let { fileName, fileType } = req.query;

if (fileName.trim()) {
const data = await File.fetchAll();
const searchAndFilterFiles = async (req, res) => {
const { fileName, fileType } = req.query;

if (fileName && fileName.trim()) {
let response;

if (fileType.trim()) {
fileType = fileType.split(',');
response = data.filter(({ fileName: name, type }) => {
return new RegExp(String(fileName), 'i').test(name) && fileType.includes(type);
if (fileType && fileType.trim()) {
response = await File.fetchByFilter({
fileName: { '$regex': fileName, '$options': 'i' }, type: { '$in': fileType.split(',') }
});
} else {
response = data.filter(({ fileName: name }) => {
return new RegExp(String(fileName), 'i').test(name);
});
response = await File.fetchByFilter({ fileName: { '$regex': fileName, '$options': 'i' } });
}

if (!response.length) {
Expand All @@ -34,6 +29,25 @@ exports.searchAndFilterFiles = async (req, res) => {
}
}


exports.searchFilesAndFolders = async (req, res) => {
const { category } = req.query;

if (!category) throw new BadRequestError('Category not provided! Valid categories are "files" & "folders"');

switch (category.toLowerCase()) {
case 'files':
searchAndFilterFiles(req, res);
break;
// case 'folders':
// searchAndFilterFolders(req, res);
// break;
default:
throw new BadRequestError('Invalid category! Valid categories are "files" & "folders"');
}
}


exports.searchFileAndFolder = async (req, res) => {
let { searchQuery } = req.query;
const fileData = await File.fetchAll();
Expand Down
4 changes: 2 additions & 2 deletions backend/routes/search.route.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const router = require('express').Router();
const { searchAndFilterFiles,searchFileAndFolder,testSearch } = require('../controllers/search.controller');
const { searchFilesAndFolders,searchFileAndFolder,testSearch } = require('../controllers/search.controller');

router.get('/', searchAndFilterFiles);
router.get('/', searchFilesAndFolders);
router.get('/fileAndFolder/', searchFileAndFolder)
router.get('/testSearch/', testSearch)

Expand Down

0 comments on commit ea4b55d

Please sign in to comment.