The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

NAME

SQL::Validator - Validate JSON-SQL

ABSTRACT

Validate JSON-SQL Schemas

SYNOPSIS

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