Skip to content
/ dml Public

A data modeling language (for node and the browser)

License

Notifications You must be signed in to change notification settings

voltraco/dml

Repository files navigation

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]'
    }]
  }
}

Releases

No releases published

Packages

No packages published