hottea

0.0.3 • Public • Published

Hottea

Hottea has been created to separate data management in business and data layers in a functional programming way. It allows for manipulating, validation and association handling of the business entities and at the same time keeping advantages of data immutability.

Example:

// article.js
 
// using composition
module.exports = {
  change(data, attrs) {
    return compose(
      required({ fields: ['title', 'body'] }),
      length({ fields: ['body'], min: 10, max: 300 }),
      acceptance({ fields: ['rules'] })
    )(cast(data, attrs, ['title', 'body', 'rules']))
  }
}
 
// or fluent api
module.exports = {
  change(data, attrs) {
    return from(data, attrs, ['title', 'body', 'rules'])
      .required({ fields: ['title', 'body'] })
      .length({ fields: ['body'], min: 10, max: 300 })
      .acceptance({ fields: ['rules'] }).changeset
  }
}
 
// index.js
var article = require('./article')
 
var entity = repo.getById(1)
var changeset = article.change(entity, { title: 'new title', rules: false })
 
equal(changeset, {
  data: entity,
  changes: { title: 'new title', rules: false },
  errors: {
    body: [{ message: "can't be blank", validation: 'required' }],
    rules: [{ message: 'is required', validation: 'acceptance' }]
  },
  valid: false
})

See online documentation for more.

Tests

npm run test

Package Sidebar

Install

npm i hottea

Weekly Downloads

3

Version

0.0.3

License

MIT

Last publish

Collaborators

  • jacekbogdanski