A JSON Schema validator for Postgres implemented in Rust
This repo is a lightweight connection between the following excellent packages:
-
PGX framework for developing PostgreSQL extensions in Rust
-
jsonschema-rs Rust schema validation library
-
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
Install PGX
cargo install cargo-pgx
-
Download this repo
curl -L 'https://github.com/jefbarn/pgx_json_schema/archive/refs/tags/0.1.0.tar.gz' | tar -xz --strip-components=1
-
Build and install the extension package
cargo pgx package
-
Enable the extension in your database
create extension pgx_json_schema;
select * from json_schema_is_valid('{"maxLength": 5}'::jsonb, '"foobar"'::jsonb);
json_schema_is_valid
----------------------
f
select * from json_schema_get_errors('{"maxLength": 5}'::jsonb, '"foobar"'::jsonb);
error_value | description | details | instance_path | schema_path
------------+--------------------------------------+------------------------+---------------+-------------
"foobar" | "foobar" is longer than 5 characters | MaxLength { limit: 5 } | | /maxLength