NAME

   SQL::Validator - Validate JSON-SQL

ABSTRACT

   Validate JSON-SQL Schemas

SYNOPSIS

     use SQL::Validator;

     my $sql = SQL::Validator->new;

     # my $valid = $sql->validate({
     #   insert => {
     #     into => {
     #       table => 'users'
     #     },
     #     default => 1
     #   }
     # });

     # i.e. represents (INSERT INTO "users" DEFAULT VALUES)

     # die $sql->error if !$valid;

     # $sql->error->report('insert');

DESCRIPTION

   This package provides a json-sql
   <https://github.com/iamalnewkirk/json-sql#readme> data structure
   validation library based on the JSON-SQL json-schema
   <https://json-schema.org> standard.

ATTRIBUTES

   This package has the following attributes:

schema

     schema(Any)

   This attribute is read-only, accepts (Any) values, and is optional.

validator

     validator(InstanceOf["JSON::Validator"])

   This attribute is read-only, accepts (InstanceOf["JSON::Validator"])
   values, and is optional.

version

     version(Str)

   This attribute is read-only, accepts (Str) values, and is optional.

METHODS

   This package implements the following methods:

error

     error() : InstanceOf["SQL::Validator::Error"]

   The error method validates the JSON-SQL schema provided.

   error example #1

       # given: synopsis

       $sql->validate({select => {}});

       my $error = $sql->error;

   error example #2

       # given: synopsis

       $sql->validate({select => { from => { table => 'users' } } });

       my $error = $sql->error;

validate

     validate(HashRef $schema) : Bool

   The validate method validates the JSON-SQL schema provided.

   validate example #1

       # given: synopsis

       my $valid = $sql->validate({
         insert => {
           into => {
             table => 'users'
           },
           default => 1
         }
       });

       # VALID

   validate example #2

       # given: synopsis

       my $valid = $sql->validate({
         insert => {
           into => {
             table => 'users'
           },
           default => 'true' # coerced booleans
         }
       });

       # VALID

   validate example #3

       # given: synopsis

       my $valid = $sql->validate({
         insert => {
           into => 'users',
           values => [1, 2, 3]
         }
       });

       # INVALID

AUTHOR

   Al Newkirk, [email protected]

LICENSE

   Copyright (C) 2011-2019, Al Newkirk, et al.

   This is free software; you can redistribute it and/or modify it under
   the terms of the The Apache License, Version 2.0, as elucidated in the
   "license file"
   <https://github.com/iamalnewkirk/sql-validator/blob/master/LICENSE>.

PROJECT

   Wiki <https://github.com/iamalnewkirk/sql-validator/wiki>

   Project <https://github.com/iamalnewkirk/sql-validator>

   Initiatives <https://github.com/iamalnewkirk/sql-validator/projects>

   Milestones <https://github.com/iamalnewkirk/sql-validator/milestones>

   Contributing
   <https://github.com/iamalnewkirk/sql-validator/blob/master/CONTRIBUTE.md>

   Issues <https://github.com/iamalnewkirk/sql-validator/issues>