Skip to content

Commit 0cdb62c

Browse files
authored
Merge pull request #135 from marc101101/feature/128_search_queries
Feature/128 search queries
2 parents fe0c9dd + e889fc4 commit 0cdb62c

4 files changed

Lines changed: 39 additions & 4 deletions

File tree

server/api/swagger.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,13 @@ paths:
234234
tags:
235235
- "Courses"
236236
summary: "get all courses"
237-
description: "get all courses"
237+
description: "get all courses, optional search"
238238
operationId: "coursesGET"
239-
parameters: []
239+
parameters:
240+
- name: "search"
241+
in: "query"
242+
required: false
243+
type: "string"
240244
responses:
241245
200:
242246
description: "request successful"

server/controllers/Courses.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ module.exports.coursesCourse_idSignoffPOST = function coursesCourse_idSignoffPOS
5555
};
5656

5757
module.exports.coursesGET = function coursesGET (req, res, next) {
58-
Courses.coursesGET()
58+
let query = req.swagger.params['search'].value;
59+
Courses.coursesGET(query)
5960
.then(function (response) {
6061
utils.writeJson(res, response);
6162
})

server/service/CoursesService.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,23 @@ exports.coursesCourse_idSignoffPOST = function (course_id, req) {
180180
*
181181
* returns List
182182
**/
183-
exports.coursesGET = function () {
183+
exports.coursesGET = function (query) {
184184
return new Promise(function (resolve, reject) {
185+
if (query !== undefined) {
186+
Courses
187+
.query(function (qb) {
188+
qb.where('KURS_NAME', 'LIKE', '%'+query+'%')
189+
.orWhere('KURS_BESCHREIBUNG', 'LIKE', '%'+query+'%')
190+
})
191+
192+
.fetchAll({withRelated: ["location"]})
193+
.then((course) => {
194+
resolve(course.toJSON());
195+
})
196+
.catch((error) => {
197+
reject(error);
198+
});
199+
} else {
185200
Courses
186201
.fetchAll({withRelated: ["location"]})
187202
.then((course) => {
@@ -190,6 +205,7 @@ exports.coursesGET = function () {
190205
.catch((error) => {
191206
reject(error);
192207
});
208+
}
193209
});
194210
}
195211

server/test/courses.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,18 @@ describe("Courses Highlights", () => {
223223
done();
224224
})
225225
})
226+
227+
it("it should get all courses with found by a query", (done) => {
228+
chai.request(server)
229+
.get('/v1/courses')
230+
.query({search: 'schuhe'})
231+
.end((err, res) => {
232+
res.should.have.status(200);
233+
res.body.forEach(item => {
234+
item.KURS_NAME.toLowerCase().should.contain('schuhe');
235+
item.DATENHISTORY.should.equal("COURSE_IDENTIFIER");
236+
})
237+
done();
238+
})
239+
})
226240
});

0 commit comments

Comments
 (0)