Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

Commit 7909853

Browse files
committed
Drop :nameId scope for resource. Add readme for resource
1 parent 0cd16ba commit 7909853

3 files changed

Lines changed: 78 additions & 22 deletions

File tree

README.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,13 @@ createRest(r => {
118118

119119
### get, post, put, patch, delete
120120

121-
Simple handlers for general HTTP methods.
121+
Simple handlers for general HTTP methods. Handlers will be merged.
122122

123123
```js
124124
createRest(r => {
125125
r.get('name', () => console.log('named handler'))
126126
r.get(() => console.log('root handler'))
127+
r.get(() => console.log('second root handler'))
127128
r.post('create',
128129
(req, res, next) => next(),
129130
authorize('user'),
@@ -160,3 +161,45 @@ GET /foo/bar
160161
4
161162
5
162163
```
164+
165+
### resource
166+
167+
Create 4 handlers for single resource.
168+
169+
```
170+
resource(name: string, controller: object, options?: { only?: string[], except?: string[] })
171+
```
172+
173+
```js
174+
const Controller = {
175+
read() {},
176+
create() {},
177+
update() {},
178+
destroy() {},
179+
beforeEach() {},
180+
afterEach() {},
181+
}
182+
const SecondCtrl = {
183+
read() {},
184+
update() {},
185+
}
186+
const routes = createRest(r => {
187+
r.resource('example', Controller)
188+
r.resource('demo', Controller, { only: ['create', 'read'] })
189+
r.resource('single', Controller, { except: ['destroy', 'create'] })
190+
})
191+
printRoutes(routes, true)
192+
```
193+
194+
```
195+
GET /example/ -> beforeEach(), read(), afterEach()
196+
POST /example/ -> beforeEach(), create(), afterEach()
197+
PUT /example/ -> beforeEach(), update(), afterEach()
198+
DELETE /example/ -> beforeEach(), destroy(), afterEach()
199+
200+
GET /demo/ -> beforeEach(), read(), afterEach()
201+
POST /demo/ -> beforeEach(), create(), afterEach()
202+
203+
GET /single/ -> beforeEach(), read(), afterEach()
204+
PUT /single/ -> beforeEach(), update(), afterEach()
205+
```

lib/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,11 @@ class Maker {
181181
.filter(handler => methodsList.includes(handler))
182182
.map(handler => [handler, methods[handler]])
183183
.forEach(([handler, httpMethod]) => {
184-
r[httpMethod](idName, controller[handler])
184+
r[httpMethod](controller[handler])
185185
})
186186
})
187187
}
188+
188189
}
189190

190191
/**

test/index.test.js

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,11 @@ test('Simple resource with default options', t => {
243243
r.resource('unicorn', ObjectController)
244244
}),
245245
make([], [], {
246-
unicorn: make([], [], {
247-
':unicornId': make([], [], {}, {
248-
GET: [ObjectController.read],
249-
POST: [ObjectController.create],
250-
PUT: [ObjectController.update],
251-
DELETE: [ObjectController.destroy],
252-
}),
246+
unicorn: make([], [], {}, {
247+
GET: [ObjectController.read],
248+
POST: [ObjectController.create],
249+
PUT: [ObjectController.update],
250+
DELETE: [ObjectController.destroy],
253251
}),
254252
}, {})
255253
)
@@ -265,12 +263,10 @@ test('resource with partial controller and before/after', t => {
265263
)
266264
}),
267265
make([], [], {
268-
unicorn: make([before], [after], {
269-
':unicornId': make([], [], {}, {
270-
GET: [ObjectController.read],
271-
PUT: [ObjectController.update],
272-
DELETE: [ObjectController.destroy],
273-
})
266+
unicorn: make([before], [after], {}, {
267+
GET: [ObjectController.read],
268+
PUT: [ObjectController.update],
269+
DELETE: [ObjectController.destroy],
274270
}, {})
275271
}, {})
276272
)
@@ -298,10 +294,8 @@ test('Resource with options.only', t => {
298294
r.resource('unicorn', ObjectController, { only: ['create'] })
299295
}),
300296
make([], [], {
301-
unicorn: make([], [], {
302-
':unicornId': make([], [], {}, {
303-
POST: [ObjectController.create],
304-
}),
297+
unicorn: make([], [], {}, {
298+
POST: [ObjectController.create],
305299
}),
306300
}, {})
307301
)
@@ -313,13 +307,31 @@ test('Resource with options.except', t => {
313307
r.resource('unicorn', ObjectController, { except: ['create'] })
314308
}),
315309
make([], [], {
316-
unicorn: make([], [], {
317-
':unicornId': make([], [], {}, {
310+
unicorn: make([], [], {}, {
311+
GET: [ObjectController.read],
312+
PUT: [ObjectController.update],
313+
DELETE: [ObjectController.destroy],
314+
}),
315+
}, {})
316+
)
317+
})
318+
319+
320+
test('resource in scope', t => {
321+
t.deepEqual(
322+
createRest(r => {
323+
r.scope('rainbow', r => {
324+
r.resource('unicorn', ObjectController, { except: ['create'] })
325+
})
326+
}),
327+
make([], [], {
328+
rainbow: make([], [], {
329+
unicorn: make([], [], {}, {
318330
GET: [ObjectController.read],
319331
PUT: [ObjectController.update],
320332
DELETE: [ObjectController.destroy],
321333
}),
322-
}),
334+
})
323335
}, {})
324336
)
325337
})

0 commit comments

Comments
 (0)