clay-policy

2.1.13 • Public • Published

clay-policy

Build Status npm Version JS Standard

Schema helpers for ClayDB resources

Table of Contents

Installation

$ npm install clay-policy --save

Usage

'use strict'
 
const clayPolicy = require('clay-policy')
const {STRING, DATE} = clayPolicy.DataTypes
 
async function tryPolicy () {
  const policy = clayPolicy({
    username: {
      type: STRING,
      required: true
    },
    birthday: {
      type: DATE
    },
    rank: {
      type: STRING,
      oneOf: ['GOLD', 'SLIVER', 'BRONZE']
    }
  })
 
  const error = policy.validate({
    username: 'hoge',
    rank: 'SUPER'
  })
  console.error(error.detail.failures) // -> { rank: { reason: 'enums', expects: [ /* ... */ ], actual: 'ULTRA' } }
}
 
tryPolicy().catch((err) => console.error(err))
 

Field Restrictions

Restriction Type Description default
type Type of the field. Possible values are defined as DataTypes in clay-constants package.
oneOf array Enum values for the field (Only for STRING type)
required boolean Value is required for the field
default Default value of the field
unique boolean Add unique constraint on the field
uniqueFor array Names of attributes to make unique for
minimum number Minimum value of the field (Only for NUMBER type)
maximum number Maximum value of the field (Only for NUMBER type)
minLength integer Minimum length of the field
maxLength integer Maximum length of the field
trim boolean Trim value. (Only for STRING type)
pattern string Restrict value with pattern. (Only for STRING type)
multiple boolean Field can contain multiple value. Type restriction will be applied to each items

API Guide

Data Types

Available data types

  • NUMBER
  • STRING
  • BOOLEAN
  • DATE
  • OBJECT
  • NULL
  • REF
  • ENTITY
  • ID

License

This software is released under the Apache-2.0 License.

Links

Readme

Keywords

Package Sidebar

Install

npm i clay-policy

Weekly Downloads

24

Version

2.1.13

License

Apache-2.0

Unpacked Size

148 kB

Total Files

63

Last publish

Collaborators

  • okunishinishi
  • realglobe