voltraco / dml

A data modeling language (for node and the browser)

Home Page:http://dml.sh

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SYNOPSIS

A data modeling language reference implementation. See dml.sh

BUILD

Build Status

USAGE

sample.model

Define a model using the data modeling language syntax

// An example data model

Date created
Number id

String name
  require // this is a comment
  gt 2 "Must be greater than 2 characters"
  lte 256 "Must be less than or equal to 256 characters"

String bio "A bio must be a string"
  lte 140 "A bio must fit into a tweet"

Boolean accountType

index.js

Compiling a model returns a function that will validate data.

const Models = require('node-dml')

let model = Models.compile(fs.readFileSync('sample.model', 'utf8'))

let result = model({
  id: 1337,
  created: new Date(),
  name: 'Glen Danzig',
  accountType: 'awesome'
})

output

The result will be an object that contains the final data, as well as a length property which indicates how many rules were violated, and a rules property containing information about the rules that were violated.

{
  data: {
    id: 1337,
    created: '2016-10-02T13:56:44.931Z',
    name: 'Glen Danzig',
    accountType: 'awesome'
  },
  length: 1,
  rules: {
    accountType: [{
      validator: 'type',
      message: 'Expected type [Boolean] but got type [String]'
    }]
  }
}

About

A data modeling language (for node and the browser)

http://dml.sh

License:MIT License


Languages

Language:JavaScript 100.0%