more tests progress

This commit is contained in:
2026-03-12 18:24:13 -04:00
parent 732034bbc7
commit f666e608da
2 changed files with 188 additions and 3 deletions

View File

@ -91,7 +91,12 @@ The Queryer transforms Postgres into a pre-compiled Semantic Query Engine via th
### Core Features
* **Schema-to-SQL Compilation**: Compiles JSON Schema ASTs spanning deep arrays directly into static, pre-planned SQL multi-JOIN queries. This explicitly features the `Smart Merge` evaluation engine which natively translates properties through `allOf` and `$ref` inheritances, mapping JSON fields specifically to their physical database table aliases during translation.
* **DashMap SQL Caching**: Executes compiled SQL via Postgres SPI execution, securely caching the static string compilation templates per schema permutation inside the `GLOBAL_JSPG` application memory, drastically reducing repetitive schema crawling.
* **Dynamic Filtering**: Binds parameters natively through `cue.filters` objects. Dynamically handles string formatting (e.g. parsing `uuid` or formatting date-times) and safely escapes complex combinations utilizing `ILIKE` operations correctly mapped to the originating structural table.
* **Dynamic Filtering**: Binds parameters natively through `cue.filters` objects. The queryer enforces a strict, structured, MongoDB-style operator syntax to map incoming JSON request paths directly to their originating structural table columns.
* **Equality / Inequality**: `{"$eq": value}`, `{"$ne": value}` automatically map to `=` and `!=`.
* **Comparison**: `{"$gt": ...}`, `{"$gte": ...}`, `{"$lt": ...}`, `{"$lte": ...}` directly compile to Postgres comparison operators (`> `, `>=`, `<`, `<=`).
* **Array Inclusion**: `{"$in": [values]}`, `{"$nin": [values]}` use native `jsonb_array_elements_text()` bindings to enforce `IN` and `NOT IN` logic without runtime SQL injection risks.
* **Text Matching (ILIKE)**: Evaluates `$eq` or `$ne` against string fields containing the `%` character natively into Postgres `ILIKE` and `NOT ILIKE` partial substring matches.
* **Type Casting**: Safely resolves dynamic combinations by casting values instantly into the physical database types mapped in the schema (e.g. parsing `uuid` bindings to `::uuid`, formatting DateTimes to `::timestamptz`, and numbers to `::numeric`).
### 4. The Stem Engine
Rather than over-fetching heavy Entity payloads and trimming them, Punc Framework Websockets depend on isolated subgraphs defined as **Stems**.

View File

@ -555,7 +555,37 @@
"success": true,
"sql": [
[
"DUMMY TO FAIL AND DUMP SQL"
"(SELECT jsonb_build_object(",
" 'archived', t1_obj_t1.archived,",
" 'created_at', t1_obj_t1.created_at,",
" 'id', t1_obj_t1.id,",
" 'name', t1_obj_t1.name,",
" 'type', t1_obj_t1.type",
")",
"FROM agreego.entity t1_obj_t1",
"WHERE",
" NOT t1_obj_t1.archived",
" AND t1_obj_t1.archived = ($1#>>'{}')::boolean",
" AND t1_obj_t1.archived != ($2#>>'{}')::boolean",
" AND t1_obj_t1.created_at = ($3#>>'{}')::timestamptz",
" AND t1_obj_t1.created_at > ($4#>>'{}')::timestamptz",
" AND t1_obj_t1.created_at >= ($5#>>'{}')::timestamptz",
" AND t1_obj_t1.created_at < ($6#>>'{}')::timestamptz",
" AND t1_obj_t1.created_at <= ($7#>>'{}')::timestamptz",
" AND t1_obj_t1.created_at != ($8#>>'{}')::timestamptz",
" AND t1_obj_t1.id = ($9#>>'{}')::uuid",
" AND t1_obj_t1.id IN (SELECT value::uuid FROM jsonb_array_elements_text(($10#>>'{}')::jsonb))",
" AND t1_obj_t1.id != ($11#>>'{}')::uuid",
" AND t1_obj_t1.id NOT IN (SELECT value::uuid FROM jsonb_array_elements_text(($12#>>'{}')::jsonb))",
" AND t1_obj_t1.name ILIKE $13#>>'{}'",
" AND t1_obj_t1.name > ($14#>>'{}')",
" AND t1_obj_t1.name >= ($15#>>'{}')",
" AND t1_obj_t1.name IN (SELECT value FROM jsonb_array_elements_text(($16#>>'{}')::jsonb))",
" AND t1_obj_t1.name < ($17#>>'{}')",
" AND t1_obj_t1.name <= ($18#>>'{}')",
" AND t1_obj_t1.name NOT ILIKE $19#>>'{}'",
" AND t1_obj_t1.name NOT IN (SELECT value FROM jsonb_array_elements_text(($20#>>'{}')::jsonb))",
")"
]
]
}
@ -782,7 +812,157 @@
"success": true,
"sql": [
[
"DUMMY TO FAIL AND DUMP SQL"
"(SELECT jsonb_build_object(",
" 'addresses',",
" (SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'archived', t1_obj_t2_addresses_t3.archived,",
" 'created_at', t1_obj_t2_addresses_t3.created_at,",
" 'id', t1_obj_t2_addresses_t3.id,",
" 'is_primary', t1_obj_t2_addresses_t1.is_primary,",
" 'name', t1_obj_t2_addresses_t3.name,",
" 'target',",
" (SELECT jsonb_build_object(",
" 'archived', t1_obj_t2_addresses_t3_target_t2.archived,",
" 'city', t1_obj_t2_addresses_t3_target_t1.city,",
" 'created_at', t1_obj_t2_addresses_t3_target_t2.created_at,",
" 'id', t1_obj_t2_addresses_t3_target_t2.id,",
" 'name', t1_obj_t2_addresses_t3_target_t2.name,",
" 'type', t1_obj_t2_addresses_t3_target_t2.type",
" )",
" FROM agreego.address t1_obj_t2_addresses_t3_target_t1",
" JOIN agreego.entity t1_obj_t2_addresses_t3_target_t2 ON t1_obj_t2_addresses_t3_target_t2.id = t1_obj_t2_addresses_t3_target_t1.id",
" WHERE",
" NOT t1_obj_t2_addresses_t3_target_t1.archived",
" AND t1_obj_t2_addresses_t3_target_t1.parent_id = t1_obj_t2_addresses_t3.id",
" ),",
" 'type', t1_obj_t2_addresses_t3.type",
" )), '[]'::jsonb)",
" FROM agreego.contact t1_obj_t2_addresses_t1",
" JOIN agreego.relationship t1_obj_t2_addresses_t2 ON t1_obj_t2_addresses_t2.id = t1_obj_t2_addresses_t1.id",
" JOIN agreego.entity t1_obj_t2_addresses_t3 ON t1_obj_t2_addresses_t3.id = t1_obj_t2_addresses_t2.id",
" WHERE",
" NOT t1_obj_t2_addresses_t1.archived",
" AND t1_obj_t2_addresses_t1.parent_id = t1_obj_t2.id),",
" 'age', t1_obj_t1.age,",
" 'archived', t1_obj_t2.archived,",
" 'contacts',",
" (SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'archived', t1_obj_t2_contacts_t3.archived,",
" 'created_at', t1_obj_t2_contacts_t3.created_at,",
" 'id', t1_obj_t2_contacts_t3.id,",
" 'is_primary', t1_obj_t2_contacts_t1.is_primary,",
" 'name', t1_obj_t2_contacts_t3.name,",
" 'target', t1_obj_t2_contacts_t3.target,",
" 'type', t1_obj_t2_contacts_t3.type",
" )), '[]'::jsonb)",
" FROM agreego.contact t1_obj_t2_contacts_t1",
" JOIN agreego.relationship t1_obj_t2_contacts_t2 ON t1_obj_t2_contacts_t2.id = t1_obj_t2_contacts_t1.id",
" JOIN agreego.entity t1_obj_t2_contacts_t3 ON t1_obj_t2_contacts_t3.id = t1_obj_t2_contacts_t2.id",
" WHERE",
" NOT t1_obj_t2_contacts_t1.archived",
" AND t1_obj_t2_contacts_t1.parent_id = t1_obj_t2.id),",
" 'created_at', t1_obj_t2.created_at,",
" 'email_addresses',",
" (SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'archived', t1_obj_t2_email_addresses_t3.archived,",
" 'created_at', t1_obj_t2_email_addresses_t3.created_at,",
" 'id', t1_obj_t2_email_addresses_t3.id,",
" 'is_primary', t1_obj_t2_email_addresses_t1.is_primary,",
" 'name', t1_obj_t2_email_addresses_t3.name,",
" 'target',",
" (SELECT jsonb_build_object(",
" 'address', t1_obj_t2_email_addresses_t3_target_t1.address,",
" 'archived', t1_obj_t2_email_addresses_t3_target_t2.archived,",
" 'created_at', t1_obj_t2_email_addresses_t3_target_t2.created_at,",
" 'id', t1_obj_t2_email_addresses_t3_target_t2.id,",
" 'name', t1_obj_t2_email_addresses_t3_target_t2.name,",
" 'type', t1_obj_t2_email_addresses_t3_target_t2.type",
" )",
" FROM agreego.email_address t1_obj_t2_email_addresses_t3_target_t1",
" JOIN agreego.entity t1_obj_t2_email_addresses_t3_target_t2 ON t1_obj_t2_email_addresses_t3_target_t2.id = t1_obj_t2_email_addresses_t3_target_t1.id",
" WHERE",
" NOT t1_obj_t2_email_addresses_t3_target_t1.archived",
" AND t1_obj_t2_email_addresses_t3_target_t1.parent_id = t1_obj_t2_email_addresses_t3.id",
" ),",
" 'type', t1_obj_t2_email_addresses_t3.type",
" )), '[]'::jsonb)",
" FROM agreego.contact t1_obj_t2_email_addresses_t1",
" JOIN agreego.relationship t1_obj_t2_email_addresses_t2 ON t1_obj_t2_email_addresses_t2.id = t1_obj_t2_email_addresses_t1.id",
" JOIN agreego.entity t1_obj_t2_email_addresses_t3 ON t1_obj_t2_email_addresses_t3.id = t1_obj_t2_email_addresses_t2.id",
" WHERE",
" NOT t1_obj_t2_email_addresses_t1.archived",
" AND t1_obj_t2_email_addresses_t1.parent_id = t1_obj_t2.id),",
" 'first_name', t1_obj_t1.first_name,",
" 'id', t1_obj_t2.id,",
" 'last_name', t1_obj_t1.last_name,",
" 'name', t1_obj_t2.name,",
" 'phone_numbers',",
" (SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'archived', t1_obj_t2_phone_numbers_t3.archived,",
" 'created_at', t1_obj_t2_phone_numbers_t3.created_at,",
" 'id', t1_obj_t2_phone_numbers_t3.id,",
" 'is_primary', t1_obj_t2_phone_numbers_t1.is_primary,",
" 'name', t1_obj_t2_phone_numbers_t3.name,",
" 'target',",
" (SELECT jsonb_build_object(",
" 'archived', t1_obj_t2_phone_numbers_t3_target_t2.archived,",
" 'created_at', t1_obj_t2_phone_numbers_t3_target_t2.created_at,",
" 'id', t1_obj_t2_phone_numbers_t3_target_t2.id,",
" 'name', t1_obj_t2_phone_numbers_t3_target_t2.name,",
" 'number', t1_obj_t2_phone_numbers_t3_target_t1.number,",
" 'type', t1_obj_t2_phone_numbers_t3_target_t2.type",
" )",
" FROM agreego.phone_number t1_obj_t2_phone_numbers_t3_target_t1",
" JOIN agreego.entity t1_obj_t2_phone_numbers_t3_target_t2 ON t1_obj_t2_phone_numbers_t3_target_t2.id = t1_obj_t2_phone_numbers_t3_target_t1.id",
" WHERE",
" NOT t1_obj_t2_phone_numbers_t3_target_t1.archived",
" AND t1_obj_t2_phone_numbers_t3_target_t1.parent_id = t1_obj_t2_phone_numbers_t3.id",
" ),",
" 'type', t1_obj_t2_phone_numbers_t3.type",
" )), '[]'::jsonb)",
" FROM agreego.contact t1_obj_t2_phone_numbers_t1",
" JOIN agreego.relationship t1_obj_t2_phone_numbers_t2 ON t1_obj_t2_phone_numbers_t2.id = t1_obj_t2_phone_numbers_t1.id",
" JOIN agreego.entity t1_obj_t2_phone_numbers_t3 ON t1_obj_t2_phone_numbers_t3.id = t1_obj_t2_phone_numbers_t2.id",
" WHERE",
" NOT t1_obj_t2_phone_numbers_t1.archived",
" AND t1_obj_t2_phone_numbers_t1.parent_id = t1_obj_t2.id),",
" 'type', t1_obj_t2.type",
")",
"FROM agreego.person t1_obj_t1",
"JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id",
"WHERE",
" NOT t1_obj_t1.archived",
" AND t1_obj_t1.age = ($1#>>'{}')::numeric",
" AND t1_obj_t1.age > ($2#>>'{}')::numeric",
" AND t1_obj_t1.age >= ($3#>>'{}')::numeric",
" AND t1_obj_t1.age IN (SELECT value::numeric FROM jsonb_array_elements_text(($4#>>'{}')::jsonb))",
" AND t1_obj_t1.age < ($5#>>'{}')::numeric",
" AND t1_obj_t1.age <= ($6#>>'{}')::numeric",
" AND t1_obj_t1.age != ($7#>>'{}')::numeric",
" AND t1_obj_t1.age NOT IN (SELECT value::numeric FROM jsonb_array_elements_text(($8#>>'{}')::jsonb))",
" AND t1_obj_t2.archived = ($9#>>'{}')::boolean",
" AND t1_obj_t2.archived != ($10#>>'{}')::boolean",
" AND t1_obj_t2.created_at = ($11#>>'{}')::timestamptz",
" AND t1_obj_t2.created_at > ($12#>>'{}')::timestamptz",
" AND t1_obj_t2.created_at >= ($13#>>'{}')::timestamptz",
" AND t1_obj_t2.created_at < ($14#>>'{}')::timestamptz",
" AND t1_obj_t2.created_at <= ($15#>>'{}')::timestamptz",
" AND t1_obj_t2.created_at != ($16#>>'{}')::timestamptz",
" AND t1_obj_t1.first_name ILIKE $17#>>'{}'",
" AND t1_obj_t1.first_name > ($18#>>'{}')",
" AND t1_obj_t1.first_name >= ($19#>>'{}')",
" AND t1_obj_t1.first_name IN (SELECT value FROM jsonb_array_elements_text(($20#>>'{}')::jsonb))",
" AND t1_obj_t1.first_name < ($21#>>'{}')",
" AND t1_obj_t1.first_name <= ($22#>>'{}')",
" AND t1_obj_t1.first_name NOT ILIKE $23#>>'{}'",
" AND t1_obj_t1.first_name NOT IN (SELECT value FROM jsonb_array_elements_text(($24#>>'{}')::jsonb))",
" AND t1_obj_t2.id = ($25#>>'{}')::uuid",
" AND t1_obj_t2.id IN (SELECT value::uuid FROM jsonb_array_elements_text(($26#>>'{}')::jsonb))",
" AND t1_obj_t2.id != ($27#>>'{}')::uuid",
" AND t1_obj_t2.id NOT IN (SELECT value::uuid FROM jsonb_array_elements_text(($28#>>'{}')::jsonb))",
" AND t1_obj_t1.last_name ILIKE $29#>>'{}'",
" AND t1_obj_t1.last_name NOT ILIKE $30#>>'{}'",
")"
]
]
}