0.0.3 • Published 6 years ago

hottea v0.0.3

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

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