0.3.9 • Published 6 years ago

patch-maker v0.3.9

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

Patch Maker

Rapidly build HTTP PATCH endpoints for you mongo-backed restful resources.

Getting Started

Install Patch Maker:

npm install patch-maker --save

Overview

Patch Maker is a PATCH submission parser builder/dsl. It allows you to quickly and concisely describe a mutable mongo-backed restful resource.

Examples

Build a Parser (with the help of the 'accurized' module):

{ field } = require 'accurize'
{ patch } = require 'patch-maker'
app.patch '/types', (req, res, next) ->
  parser = patch.parser ->
    @prop 'types', ->
      @oper 'set', (types, pass, fail) ->
        return fail 'Types must be a list of strings.' unless is_array types
        return fail 'Types cannot be empty.' if is_empty types
        for type in types
          return fail 'Each type must be a string' unless is_string type
          return fail 'A type cannot be empty.' if is_empty type
        Type(req).find(name: $in: types).all (actual) ->
          return fail 'Unrecognized type(s) specified.' unless types.length is actual.length
          pass types
      @oper 'add', (types, pass, fail) ->
        for type in types
          return fail 'A type cannot be empty.' if is_empty type
        Type(req).find(name: $in: types).all (actual) ->
          return fail 'Unrecognized type(s) specified.' unless types.length is actual.length
          pass types
      @oper 'rem', (types, pass, fail) ->
        if is_empty difference(grant.types, types)
          return fail 'The update must leave the grant with at least one type.'
        pass types
  updates.parse req.body,
    (updates) ->
      Grant(req).find_and_modify _id: id_for(grant), [['_id','asc']], updates, new: true, (grant) ->
        res.json Grant.grant_for(grant, res)
    (errors) ->
      res.json 400, { errors }

Parse a Patch:

 = require 'patch-maker'
parser =

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality.

Release History

(Nothing yet)

0.3.9

6 years ago

0.3.8

8 years ago

0.3.7

8 years ago

0.3.6

8 years ago

0.3.5

8 years ago

0.3.4

8 years ago

0.3.3

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.2

8 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.0

9 years ago

0.0.1

9 years ago