|
1 | 1 | import Response from 'ember-cli-mirage/response';
|
2 | 2 |
|
3 | 3 | import summaryFixture from '../mirage/fixtures/summary';
|
4 |
| -import searchFixture from '../mirage/fixtures/search'; |
5 | 4 |
|
6 | 5 | export default function() {
|
7 | 6 | this.get('/summary', () => summaryFixture);
|
8 | 7 |
|
9 | 8 | this.namespace = '/api/v1';
|
10 | 9 |
|
11 |
| - this.get('/crates', (schema, request) => { |
| 10 | + this.get('/crates', function(schema, request) { |
12 | 11 | 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 | + } |
17 | 29 |
|
18 | 30 | 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 | + } |
21 | 34 |
|
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())); |
25 | 37 | }
|
26 | 38 |
|
27 |
| - return payload; |
| 39 | + return withMeta(this.serialize(crates.slice(start, end)), { total: crates.length }); |
28 | 40 | });
|
29 | 41 |
|
30 | 42 | this.get('/crates/:crate_id', function(schema, request) {
|
|
0 commit comments