# one-schema

## Install

```sh
yarn add one-schema@latest
```

## How to use

```javascript
const {ons} = require('one-schema');

const userSchema = ons().object({
  _id: ons().int32().min(0),
  name: ons().string().max(48).required(),
  email: ons().string().validator("email").required(),
  bio: ons().string().min(0).max(128).defaultValue("This is my bio"),
  image_url: ons().string().min(10).max(1024).allowNull(),
  location: ons().object({
    city: ons().string(),
    country: ons().string(),
  }),
  pets: ons().arrayOf(
    ons.object({
      animal: ons().string().oneOf(["cat","dog","fish","frog"]).required(),
      color: ons().string().max(12),
      age: ons().int32().min(0).max(500),
    })
  ),
});

const sampleUser1 = {
  _id: 1,
  name: "Sam",
  email: "sam@email.com",
  location: {
    country: "Germany",
  },
  pets: [
    {
      animal: "cat",
      color: "black",
      age: 8
    },
    {
      animal: "fish",
      color: "orange",
      age: 2
    },
  ]
};

const sampleUser2 = {
  _id: 2,
  email: "BADemail.com",
  location: {
    inmyhouse: "yup",
  },
  pets: [
    {
      animal: "cheetah",
      color: "black",
      age: 1337
    },
  ]
};

function printResult(name, result) {
  if(result.success) {
    console.log(`Validation for ${name} passed successfully, object is valid.`);
  }else{
    console.error(`Validation for ${name} FAILED: ${result.error}!`);
  }
}
                                                             

//line below prints: 'Validation for User 1 Passed successfully, object is valid.'
printResult("User 1", ons.validate(sampleUser1, userSchema)); 

//line below prints: 'Validation for User 1 (JSON) Passed successfully, object is valid.'
printResult("User 1 (JSON)", ons.validate(sampleUser1, JSON.parse(JSON.stringify(userSchema)))); 


//line below prints: 'Validation for User 2 FAILED: name -> is undefined, but required!!'
printResult("User 2", ons.validate(sampleUser2, userSchema)); 

//line below prints: 'Validation for User 2 (JSON) FAILED: name -> is undefined, but required!!'
printResult("User 2 (JSON)", ons.validate(sampleUser2, JSON.parse(JSON.stringify(userSchema)))); 
```

## API

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Table of Contents

## License

MIT © [Tiancai](https://github.com/tiancai-hq)
