sqlite-err-parser 0.5.0

Deconstruct certain sqlite errors
Documentation
use rusqlite::Connection;

use sqlite_err_parser::{InterpretedError, deconstruct_error};

#[test]
fn name_len() {
  let conn = Connection::open_in_memory().unwrap();
  conn
    .execute(
      "CREATE TABLE agents (
  id   INTEGER PRIMARY KEY,
  name TEXT UNIQUE NOT NULL,
  CHECK(length(name)>=4)
)",
      ()
    )
    .unwrap();
  let Err(err) = conn.execute("INSERT INTO agents (name) VALUES (?)", ["foo"])
  else {
    panic!("Unexpectedly not Err()");
  };
  let Some(InterpretedError::Check(chk)) = deconstruct_error(&err) else {
    panic!("Not treated as InterpretedError::Check(); {err}");
  };
  assert_eq!(chk, "length(name)>=4");
}

// vim: set ft=rust et sw=2 ts=2 sts=2 cinoptions=2 tw=79 :