sqlite-jsonschema 0.2.3

A SQLite extension for validating JSON documents
Documentation
mod jsonschema;

use crate::jsonschema::jsonschema_matches;

use sqlite_loadable::prelude::*;
use sqlite_loadable::{api, define_scalar_function, Result};

pub fn jsonschema_version(
    context: *mut sqlite3_context,
    _values: &[*mut sqlite3_value],
) -> Result<()> {
    api::result_text(context, format!("v{}", env!("CARGO_PKG_VERSION")))?;
    Ok(())
}

pub fn jsonschema_debug(
    context: *mut sqlite3_context,
    _values: &[*mut sqlite3_value],
) -> Result<()> {
    api::result_text(
        context,
        format!(
            "Version: v{}
Source: {}
",
            env!("CARGO_PKG_VERSION"),
            env!("GIT_HASH")
        ),
    )?;
    Ok(())
}

#[sqlite_entrypoint]
pub fn sqlite3_jsonschema_init(db: *mut sqlite3) -> Result<()> {
    define_scalar_function(
        db,
        "jsonschema_version",
        0,
        jsonschema_version,
        FunctionFlags::UTF8 | FunctionFlags::DETERMINISTIC,
    )?;
    define_scalar_function(
        db,
        "jsonschema_debug",
        0,
        jsonschema_debug,
        FunctionFlags::UTF8 | FunctionFlags::DETERMINISTIC,
    )?;
    define_scalar_function(
        db,
        "jsonschema_matches",
        2,
        jsonschema_matches,
        FunctionFlags::UTF8,
    )?;

    Ok(())
}