Skip to content

Commit 4dd83a6

Browse files
committed
mirage/config: Implement "GET /crates" handler
1 parent 205daa2 commit 4dd83a6

File tree

5 files changed

+441
-468
lines changed

5 files changed

+441
-468
lines changed

mirage/config.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,42 @@
11
import Response from 'ember-cli-mirage/response';
22

33
import summaryFixture from '../mirage/fixtures/summary';
4-
import searchFixture from '../mirage/fixtures/search';
54

65
export default function() {
76
this.get('/summary', () => summaryFixture);
87

98
this.namespace = '/api/v1';
109

11-
this.get('/crates', (schema, request) => {
10+
this.get('/crates', function(schema, request) {
1211
const { start, end } = pageParams(request);
13-
const payload = {
14-
crates: searchFixture.crates.slice(start, end),
15-
meta: searchFixture.meta,
16-
};
12+
13+
let crates = schema.crates.all();
14+
15+
if (request.queryParams.letter) {
16+
let letter = request.queryParams.letter.toLowerCase();
17+
crates = crates.filter(crate => crate.id[0].toLowerCase() === letter);
18+
}
19+
20+
if (request.queryParams.q) {
21+
let q = request.queryParams.q.toLowerCase();
22+
crates = crates.filter(crate => crate.id.toLowerCase().indexOf(q) !== -1);
23+
}
24+
25+
if (request.queryParams.user_id) {
26+
let userId = parseInt(request.queryParams.user_id, 10);
27+
crates = crates.filter(crate => (crate._owner_users || []).indexOf(userId) !== -1);
28+
}
1729

1830
if (request.queryParams.team_id) {
19-
let teamId = request.queryParams.team_id;
20-
payload.user = schema.teams.find(teamId);
31+
let teamId = parseInt(request.queryParams.team_id, 10);
32+
crates = crates.filter(crate => (crate._owner_teams || []).indexOf(teamId) !== -1);
33+
}
2134

22-
} else if (request.queryParams.user_id) {
23-
let userId = request.queryParams.user_id;
24-
payload.user = schema.users.find(userId);
35+
if (request.queryParams.sort === 'alpha') {
36+
crates = crates.sort((a, b) => compareStrings(a.id.toLowerCase(), b.id.toLowerCase()));
2537
}
2638

27-
return payload;
39+
return withMeta(this.serialize(crates.slice(start, end)), { total: crates.length });
2840
});
2941

3042
this.get('/crates/:crate_id', function(schema, request) {

0 commit comments

Comments
 (0)