-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathjson_schema_validate--0.1.0.sql
More file actions
91 lines (77 loc) · 3.39 KB
/
json_schema_validate--0.1.0.sql
File metadata and controls
91 lines (77 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
-- JSON Schema validation extension for PostgreSQL
\echo Use "CREATE EXTENSION json_schema_validate" to load this file. \quit
-- Validate jsonb data against a JSON Schema
-- Returns true if valid, false otherwise
CREATE FUNCTION jsonschema_is_valid(data jsonb, schema jsonb)
RETURNS boolean
AS 'MODULE_PATHNAME', 'jsonschema_is_valid_jsonb'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate json data against a JSON Schema
-- Returns true if valid, false otherwise
CREATE FUNCTION jsonschema_is_valid(data json, schema json)
RETURNS boolean
AS 'MODULE_PATHNAME', 'jsonschema_is_valid_json'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate jsonb data and return detailed errors
-- Returns NULL if valid, or a JSONB array of error objects if invalid
CREATE FUNCTION jsonschema_validate(data jsonb, schema jsonb)
RETURNS jsonb
AS 'MODULE_PATHNAME', 'jsonschema_validate_jsonb'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate json data and return detailed errors
-- Returns NULL if valid, or a JSON array of error objects if invalid
CREATE FUNCTION jsonschema_validate(data json, schema json)
RETURNS json
AS 'MODULE_PATHNAME', 'jsonschema_validate_json'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- ============================================================
-- Compiled Schema Support
-- ============================================================
-- Shell type (needed so I/O functions can reference it)
CREATE TYPE jsonschema_compiled;
-- Input function
CREATE FUNCTION jsonschema_compiled_in(cstring)
RETURNS jsonschema_compiled
AS 'MODULE_PATHNAME', 'jsonschema_compiled_in'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Output function
CREATE FUNCTION jsonschema_compiled_out(jsonschema_compiled)
RETURNS cstring
AS 'MODULE_PATHNAME', 'jsonschema_compiled_out'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Create the type
CREATE TYPE jsonschema_compiled (
INPUT = jsonschema_compiled_in,
OUTPUT = jsonschema_compiled_out,
LIKE = jsonb
);
-- Compile a JSON schema for efficient repeated validation
-- Caches regex patterns and other parsed elements
CREATE FUNCTION jsonschema_compile(schema jsonb)
RETURNS jsonschema_compiled
AS 'MODULE_PATHNAME', 'jsonschema_compile'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate jsonb data against a compiled schema
-- Returns true if valid, false otherwise
CREATE FUNCTION jsonschema_is_valid(data jsonb, schema jsonschema_compiled)
RETURNS boolean
AS 'MODULE_PATHNAME', 'jsonschema_is_valid_compiled'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate jsonb data against a compiled schema and return errors
-- Returns NULL if valid, or a JSONB array of error objects if invalid
CREATE FUNCTION jsonschema_validate(data jsonb, schema jsonschema_compiled)
RETURNS jsonb
AS 'MODULE_PATHNAME', 'jsonschema_validate_compiled'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate json data against a compiled schema
-- Returns true if valid, false otherwise
CREATE FUNCTION jsonschema_is_valid(data json, schema jsonschema_compiled)
RETURNS boolean
AS 'MODULE_PATHNAME', 'jsonschema_is_valid_json_compiled'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
-- Validate json data against a compiled schema and return errors
-- Returns NULL if valid, or a JSONB array of error objects if invalid
CREATE FUNCTION jsonschema_validate(data json, schema jsonschema_compiled)
RETURNS jsonb
AS 'MODULE_PATHNAME', 'jsonschema_validate_json_compiled'
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;