Skip to content

Commit

Permalink
Rollback to _start and _end query params and update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
typicode committed Sep 18, 2014
1 parent 053484d commit aa0d2e3
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 16 deletions.
14 changes: 13 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,19 @@ PATCH /:resource/:id
DEL /:resource/:id
```

To slice resources, add `_start` and `_end` to query parameters.
To slice resources, add `_start` and `_end`.

```
GET /:resource?_start=&end=
GET /:resource?filter=&filter=&_start=&end=
GET /:parent/:parentId/:resource?_start=&end=
```

To make a full-text search on resources, add `q`.

```
GET /:resource?q=
```

For routes usage information, have a look at [JSONPlaceholder](https://github.com/typicode/jsonplaceholder) code examples.

Expand Down
23 changes: 12 additions & 11 deletions src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ routes.db = function(req, res, next) {
// GET /:resource?q=
// GET /:resource?attr=&attr=
// GET /:parent/:parentId/:resource?attr=&attr=
// GET /*?*&limit=
// GET /*?*&offset=&limit=
// GET /*?*&_end=
// GET /*?*&_start=&_end=
routes.list = function(req, res, next) {

// Filters list
Expand All @@ -23,16 +23,17 @@ routes.list = function(req, res, next) {
// Result array
var array

// Remove offset and limit from req.query to avoid filtering using those
// Remove _start and _end from req.query to avoid filtering using those
// parameters
var offset = req.query.offset
var limit = req.query.limit
var _start = req.query._start
var _end = req.query._end

delete req.query.offset
delete req.query.limit
delete req.query._start
delete req.query._end

if (req.query.q) {

// Full-text search
var q = req.query.q.toLowerCase()

array = low(req.params.resource).where(function(obj) {
Expand Down Expand Up @@ -67,14 +68,14 @@ routes.list = function(req, res, next) {
}
}

// Slicing result
if (limit) {
// Slice result
if (_end) {
res.setHeader('X-Total-Count', array.length)
res.setHeader('Access-Control-Expose-Headers', 'X-Total-Count')

offset = offset || 0
_start = _start || 0

array = array.slice(offset, limit)
array = array.slice(_start, _end)
}

res.jsonp(array)
Expand Down
8 changes: 4 additions & 4 deletions test/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@ describe('Server', function() {
})
})

describe('GET /:resource?limit=', function() {
describe('GET /:resource?_end=', function() {
it('should respond with a sliced array', function(done) {
request(server)
.get('/comments?limit=2')
.get('/comments?_end=2')
.expect('Content-Type', /json/)
.expect('x-total-count', low.db.comments.length.toString())
.expect('Access-Control-Expose-Headers', 'X-Total-Count')
Expand All @@ -91,10 +91,10 @@ describe('Server', function() {
})
})

describe('GET /:resource?offset=&limit=', function() {
describe('GET /:resource?_start=&_end=', function() {
it('should respond with a sliced array', function(done) {
request(server)
.get('/comments?offset=1&limit=2')
.get('/comments?_start=1&_end=2')
.expect('Content-Type', /json/)
.expect('x-total-count', low.db.comments.length.toString())
.expect('Access-Control-Expose-Headers', 'X-Total-Count')
Expand Down

0 comments on commit aa0d2e3

Please sign in to comment.