Skip to content

awncorp/sql-validator

Repository files navigation

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 data structure validation library based on the JSON-SQL json-schema 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, awncorp@cpan.org

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".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues