From 6d6745d95dd7dc56bbec53d980719c5bef14f5c2 Mon Sep 17 00:00:00 2001 From: Alex Groleau Date: Thu, 14 May 2026 14:48:09 -0400 Subject: [PATCH] removed all jsonb --- src/lib.rs | 29 +++++++++++++---------------- src/tests/mod.rs | 6 +++--- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index f9c528f..78da49c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,9 +4,6 @@ use pgrx::*; #[cfg(not(test))] pg_module_magic!(); -#[cfg(test)] -pub struct JsonB(pub serde_json::Value); - #[cfg(test)] pub struct Json(pub serde_json::Value); @@ -28,7 +25,7 @@ lazy_static::lazy_static! { static ref GLOBAL_JSPG: RwLock>> = RwLock::new(None); } -fn jspg_failure() -> JsonB { +fn jspg_failure() -> Json { let error = crate::drop::Error { code: "ENGINE_NOT_INITIALIZED".to_string(), message: "JSPG extension has not been initialized via jspg_setup".to_string(), @@ -40,11 +37,11 @@ fn jspg_failure() -> JsonB { }, }; let drop = crate::drop::Drop::with_errors(vec![error]); - JsonB(serde_json::to_value(drop).unwrap()) + Json(serde_json::to_value(drop).unwrap()) } #[cfg_attr(not(test), pg_extern(strict))] -pub fn jspg_setup(database: Json) -> JsonB { +pub fn jspg_setup(database: Json) -> Json { let (new_jspg, drop) = crate::jspg::Jspg::new(&database.0); let new_arc = Arc::new(new_jspg); @@ -54,11 +51,11 @@ pub fn jspg_setup(database: Json) -> JsonB { *lock = Some(new_arc); } - JsonB(serde_json::to_value(drop).unwrap()) + Json(serde_json::to_value(drop).unwrap()) } #[cfg_attr(not(test), pg_extern)] -pub fn jspg_merge(schema_id: &str, data: JsonB) -> JsonB { +pub fn jspg_merge(schema_id: &str, data: Json) -> Json { // Try to acquire a read lock to get a clone of the Engine Arc let engine_opt = { let lock = GLOBAL_JSPG.read().unwrap(); @@ -68,14 +65,14 @@ pub fn jspg_merge(schema_id: &str, data: JsonB) -> JsonB { match engine_opt { Some(engine) => { let drop = engine.merger.merge(schema_id, data.0); - JsonB(serde_json::to_value(drop).unwrap()) + Json(serde_json::to_value(drop).unwrap()) } None => jspg_failure(), } } #[cfg_attr(not(test), pg_extern)] -pub fn jspg_query(schema_id: &str, filter: Option) -> JsonB { +pub fn jspg_query(schema_id: &str, filter: Option) -> Json { let engine_opt = { let lock = GLOBAL_JSPG.read().unwrap(); lock.clone() @@ -86,7 +83,7 @@ pub fn jspg_query(schema_id: &str, filter: Option) -> JsonB { let drop = engine .queryer .query(schema_id, filter.as_ref().map(|f| &f.0)); - JsonB(serde_json::to_value(drop).unwrap()) + Json(serde_json::to_value(drop).unwrap()) } None => jspg_failure(), } @@ -95,7 +92,7 @@ pub fn jspg_query(schema_id: &str, filter: Option) -> JsonB { // `mask_json_schema` has been removed as the mask architecture is fully replaced by Spi string queries during DB interactions. #[cfg_attr(not(test), pg_extern(strict, parallel_safe))] -pub fn jspg_validate(schema_id: &str, instance: JsonB) -> JsonB { +pub fn jspg_validate(schema_id: &str, instance: Json) -> Json { // 1. Acquire Snapshot let jspg_arc = { let lock = GLOBAL_JSPG.read().unwrap(); @@ -105,7 +102,7 @@ pub fn jspg_validate(schema_id: &str, instance: JsonB) -> JsonB { // 2. Validate (Lock-Free) if let Some(engine) = jspg_arc { let drop = engine.validator.validate(schema_id, &instance.0); - JsonB(serde_json::to_value(drop).unwrap()) + Json(serde_json::to_value(drop).unwrap()) } else { jspg_failure() } @@ -125,16 +122,16 @@ pub fn jspg_database() -> Json { let drop = crate::drop::Drop::success_with_val(database_json); Json(serde_json::to_value(drop).unwrap()) } - None => Json(jspg_failure().0), + None => jspg_failure(), } } #[cfg_attr(not(test), pg_extern(strict))] -pub fn jspg_teardown() -> JsonB { +pub fn jspg_teardown() -> Json { let mut lock = GLOBAL_JSPG.write().unwrap(); *lock = None; let drop = crate::drop::Drop::success(); - JsonB(serde_json::to_value(drop).unwrap()) + Json(serde_json::to_value(drop).unwrap()) } #[cfg(test)] diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 8c2501a..514437f 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -11,7 +11,7 @@ fn test_library_api() { // 1. Initially, schemas are not cached. // Expected uninitialized drop format: errors + null response - let uninitialized_drop = jspg_validate("source_schema", JsonB(json!({}))); + let uninitialized_drop = jspg_validate("source_schema", Json(json!({}))); assert_eq!( uninitialized_drop.0, json!({ @@ -226,7 +226,7 @@ fn test_library_api() { ); // 4. Validate Happy Path - let happy_drop = jspg_validate("source_schema", JsonB(json!({"type": "source_schema", "name": "Neo"}))); + let happy_drop = jspg_validate("source_schema", Json(json!({"type": "source_schema", "name": "Neo"}))); assert_eq!( happy_drop.0, json!({ @@ -236,7 +236,7 @@ fn test_library_api() { ); // 5. Validate Unhappy Path - let unhappy_drop = jspg_validate("source_schema", JsonB(json!({"type": "source_schema", "wrong": "data"}))); + let unhappy_drop = jspg_validate("source_schema", Json(json!({"type": "source_schema", "wrong": "data"}))); assert_eq!( unhappy_drop.0, json!({