[ { "description": "Queryer Execution", "database": { "puncs": [], "enums": [], "relations": [ { "type": "relation", "id": "00000000-0000-0000-0000-000000000001", "constraint": "fk_relationship_source_entity", "source_type": "relationship", "source_columns": [ "source_id", "source_type" ], "destination_type": "entity", "destination_columns": [ "id", "type" ], "prefix": "source" }, { "type": "relation", "id": "00000000-0000-0000-0000-000000000002", "constraint": "fk_relationship_target_entity", "source_type": "relationship", "source_columns": [ "target_id", "target_type" ], "destination_type": "entity", "destination_columns": [ "id", "type" ], "prefix": "target" }, { "id": "22222222-2222-2222-2222-222222222222", "type": "relation", "constraint": "fk_order_customer", "source_type": "order", "source_columns": [ "customer_id" ], "destination_type": "person", "destination_columns": [ "id" ], "prefix": "customer" }, { "id": "33333333-3333-3333-3333-333333333333", "type": "relation", "constraint": "fk_order_line_order", "source_type": "order_line", "source_columns": [ "order_id" ], "destination_type": "order", "destination_columns": [ "id" ], "prefix": "lines" } ], "types": [ { "name": "entity", "hierarchy": [ "entity" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ] }, "field_types": { "id": "uuid", "name": "text", "archived": "boolean", "created_at": "timestamptz", "type": "text" }, "schemas": [ { "$id": "entity", "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string" }, "name": { "type": "string" }, "archived": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" } } } ], "fields": [ "id", "type", "name", "archived", "created_at" ] }, { "name": "person", "hierarchy": [ "person", "entity" ], "fields": [ "first_name", "last_name", "id", "type", "name", "age", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "person": [ "first_name", "last_name", "age" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "first_name": "text", "last_name": "text", "name": "text", "age": "numeric", "created_at": "timestamptz" }, "schemas": [ { "$id": "base.person", "$ref": "entity", "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" }, "age": { "type": "number" } } }, { "$id": "full.person", "$ref": "base.person", "properties": { "phone_numbers": { "type": "array", "items": { "$ref": "contact", "properties": { "target": { "$ref": "phone_number" } } } }, "email_addresses": { "type": "array", "items": { "$ref": "contact", "properties": { "target": { "$ref": "email_address" } } } }, "addresses": { "type": "array", "items": { "$ref": "contact", "properties": { "target": { "$ref": "address" } } } }, "contacts": { "type": "array", "items": { "$ref": "contact", "properties": { "target": { "oneOf": [ { "$ref": "phone_number" }, { "$ref": "email_address" }, { "$ref": "address" } ] } } } } } } ] }, { "name": "relationship", "relationship": true, "hierarchy": [ "relationship", "entity" ], "fields": [ "source_id", "source_type", "target_id", "target_type", "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "relationship": [ "source_id", "source_type", "target_id", "target_type" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "source_id": "uuid", "source_type": "text", "target_id": "uuid", "target_type": "text", "name": "text", "created_at": "timestamptz" }, "schemas": [ { "$id": "relationship", "$ref": "entity", "properties": {} } ] }, { "name": "contact", "relationship": true, "hierarchy": [ "contact", "relationship", "entity" ], "fields": [ "is_primary", "source_id", "source_type", "target_id", "target_type", "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "relationship": [ "source_id", "source_type", "target_id", "target_type" ], "contact": [ "is_primary" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "source_id": "uuid", "source_type": "text", "target_id": "uuid", "target_type": "text", "is_primary": "boolean", "name": "text", "created_at": "timestamptz" }, "schemas": [ { "$id": "contact", "$ref": "relationship", "properties": { "is_primary": { "type": "boolean" } } } ] }, { "name": "phone_number", "hierarchy": [ "phone_number", "entity" ], "fields": [ "number", "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "phone_number": [ "number" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "number": "text", "name": "text", "created_at": "timestamptz" }, "schemas": [ { "$id": "phone_number", "$ref": "entity", "properties": { "number": { "type": "string" } } } ] }, { "name": "email_address", "hierarchy": [ "email_address", "entity" ], "fields": [ "address", "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "email_address": [ "address" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "address": "text", "name": "text", "created_at": "timestamptz" }, "schemas": [ { "$id": "email_address", "$ref": "entity", "properties": { "address": { "type": "string" } } } ] }, { "name": "address", "hierarchy": [ "address", "entity" ], "fields": [ "city", "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "address": [ "city" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "city": "text", "name": "text", "created_at": "timestamptz" }, "schemas": [ { "$id": "address", "$ref": "entity", "properties": { "city": { "type": "string" } } } ] }, { "name": "order", "schemas": [ { "$id": "order", "$ref": "entity", "properties": { "total": { "type": "number" }, "customer_id": { "type": "string" } } }, { "$id": "full.order", "$ref": "order", "properties": { "customer": { "$ref": "base.person" }, "lines": { "type": "array", "items": { "$ref": "order_line" } } } } ], "hierarchy": [ "order", "entity" ], "fields": [ "id", "type", "total", "customer_id", "created_at", "created_by", "modified_at", "modified_by", "archived" ], "grouped_fields": { "order": [ "id", "type", "total", "customer_id" ], "entity": [ "id", "type", "created_at", "created_by", "modified_at", "modified_by", "archived" ] }, "lookup_fields": [ "id" ], "historical": true, "relationship": false, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "total": "numeric", "customer_id": "uuid", "created_at": "timestamptz", "created_by": "uuid", "modified_at": "timestamptz", "modified_by": "uuid" } }, { "name": "order_line", "schemas": [ { "$id": "order_line", "$ref": "entity", "properties": { "order_id": { "type": "string" }, "product": { "type": "string" }, "price": { "type": "number" } } } ], "hierarchy": [ "order_line", "entity" ], "fields": [ "id", "type", "order_id", "product", "price", "created_at", "created_by", "modified_at", "modified_by", "archived" ], "grouped_fields": { "order_line": [ "id", "type", "order_id", "product", "price" ], "entity": [ "id", "type", "created_at", "created_by", "modified_at", "modified_by", "archived" ] }, "lookup_fields": [], "historical": true, "relationship": false, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "order_id": "uuid", "product": "text", "price": "numeric", "created_at": "timestamptz", "created_by": "uuid", "modified_at": "timestamptz", "modified_by": "uuid" } } ] }, "tests": [ { "description": "Simple entity select", "action": "query", "schema_id": "entity", "expect": { "success": true, "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)" ] ] } }, { "description": "Simple entity select on root stem", "action": "query", "schema_id": "entity", "stem": "", "expect": { "success": true, "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)" ] ] } }, { "description": "Simple entity select with multiple filters", "action": "query", "schema_id": "entity", "filters": { "id": { "$eq": "123e4567-e89b-12d3-a456-426614174000", "$ne": "123e4567-e89b-12d3-a456-426614174001", "$in": [ "123e4567-e89b-12d3-a456-426614174000" ], "$nin": [ "123e4567-e89b-12d3-a456-426614174001" ] }, "name": { "$eq": "Jane%", "$ne": "John%", "$gt": "A", "$gte": "B", "$lt": "Z", "$lte": "Y", "$in": [ "Jane", "John" ], "$nin": [ "Bob", "Alice" ] }, "created_at": { "$eq": "2023-01-01T00:00:00Z", "$ne": "2023-01-02T00:00:00Z", "$gt": "2022-01-01T00:00:00Z", "$gte": "2022-01-02T00:00:00Z", "$lt": "2024-01-01T00:00:00Z", "$lte": "2024-01-02T00:00:00Z" }, "archived": { "$eq": false, "$ne": true } }, "expect": { "success": true, "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))", ")" ] ] } }, { "description": "Person select on base schema", "action": "query", "schema_id": "base.person", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'age', t1_obj_t1.age,", " 'archived', t1_obj_t2.archived,", " 'created_at', t1_obj_t2.created_at,", " 'first_name', t1_obj_t1.first_name,", " 'id', t1_obj_t2.id,", " 'last_name', t1_obj_t1.last_name,", " 'name', t1_obj_t2.name,", " '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)" ] ] } }, { "description": "Person select on full schema", "action": "query", "schema_id": "full.person", "expect": { "success": true, "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)" ] ] } }, { "description": "Person select on full schema with filters", "action": "query", "schema_id": "full.person", "filters": { "age": { "$eq": 30, "$gt": 20, "$gte": 20, "$in": [ 30, 40 ], "$lt": 50, "$lte": 50, "$ne": 25, "$nin": [ 1, 2 ] }, "archived": { "$eq": true, "$ne": false }, "created_at": { "$eq": "2020-01-01T00:00:00Z", "$gt": "2019-01-01T00:00:00Z", "$gte": "2019-01-01T00:00:00Z", "$lt": "2021-01-01T00:00:00Z", "$lte": "2021-01-01T00:00:00Z", "$ne": "2022-01-01T00:00:00Z" }, "first_name": { "$eq": "Jane%", "$gt": "A", "$gte": "A", "$in": [ "Jane", "John" ], "$lt": "Z", "$lte": "Z", "$ne": "Doe", "$nin": [ "Bob" ] }, "last_name": { "$eq": "%Doe%", "$ne": "%Smith%" }, "id": { "$eq": "00000000-0000-0000-0000-000000000001", "$in": [ "00000000-0000-0000-0000-000000000001" ], "$ne": "00000000-0000-0000-0000-000000000002", "$nin": [ "00000000-0000-0000-0000-000000000002" ] } }, "expect": { "success": true, "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#>>'{}'", ")" ] ] } }, { "description": "Full person stem query on phone number contact", "action": "query", "schema_id": "full.person", "stem": "phone_numbers.#", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'archived', t1_obj_t3.archived,", " 'created_at', t1_obj_t3.created_at,", " 'id', t1_obj_t3.id,", " 'is_primary', t1_obj_t1.is_primary,", " 'name', t1_obj_t3.name,", " 'type', t1_obj_t3.type)", "FROM agreego.contact t1_obj_t1", "JOIN agreego.relationship t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id", "JOIN agreego.entity t1_obj_t3 ON t1_obj_t3.id = t1_obj_t2.id", "WHERE NOT t1_obj_t1.archived)" ] ] } }, { "description": "Full person stem query on phone number contact on phone number", "action": "query", "schema_id": "full.person", "stem": "phone_numbers.#.target", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'archived', t1_obj_t2.archived,", " 'created_at', t1_obj_t2.created_at,", " 'id', t1_obj_t2.id,", " 'name', t1_obj_t2.name,", " 'number', t1_obj_t1.number,", " 'type', t1_obj_t2.type)", "FROM agreego.phone_number t1_obj_t1", "JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id", "WHERE NOT t1_obj_t1.archived)" ] ] } }, { "description": "Full person stem query on contact email address", "action": "query", "schema_id": "full.person", "stem": "contacts.#.target#(type==\"email_address\")", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'address', t1_obj_t1.address,", " 'archived', t1_obj_t2.archived,", " 'created_at', t1_obj_t2.created_at,", " 'id', t1_obj_t2.id,", " 'name', t1_obj_t2.name,", " 'type', t1_obj_t2.type)", "FROM agreego.email_address t1_obj_t1", "JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id", "WHERE NOT t1_obj_t1.archived)" ] ] } }, { "description": "Order select with customer and lines", "action": "query", "schema_id": "full.order", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'archived', t1_obj_t2.archived,", " 'created_at', t1_obj_t2.created_at,", " 'customer',", " (SELECT jsonb_build_object(", " 'age', t1_obj_t2_customer_t1.age,", " 'archived', t1_obj_t2_customer_t2.archived,", " 'created_at', t1_obj_t2_customer_t2.created_at,", " 'first_name', t1_obj_t2_customer_t1.first_name,", " 'id', t1_obj_t2_customer_t2.id,", " 'last_name', t1_obj_t2_customer_t1.last_name,", " 'name', t1_obj_t2_customer_t2.name,", " 'type', t1_obj_t2_customer_t2.type", " )", " FROM agreego.person t1_obj_t2_customer_t1", " JOIN agreego.entity t1_obj_t2_customer_t2 ON t1_obj_t2_customer_t2.id = t1_obj_t2_customer_t1.id", " WHERE", " NOT t1_obj_t2_customer_t1.archived", " AND t1_obj_t2_customer_t1.parent_id = t1_obj_t2.id),", " 'customer_id', t1_obj_t1.customer_id,", " 'id', t1_obj_t2.id,", " 'lines',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', t1_obj_t2_lines_t2.archived,", " 'created_at', t1_obj_t2_lines_t2.created_at,", " 'id', t1_obj_t2_lines_t2.id,", " 'name', t1_obj_t2_lines_t2.name,", " 'order_id', t1_obj_t2_lines_t1.order_id,", " 'price', t1_obj_t2_lines_t1.price,", " 'product', t1_obj_t2_lines_t1.product,", " 'type', t1_obj_t2_lines_t2.type", " )), '[]'::jsonb)", " FROM agreego.order_line t1_obj_t2_lines_t1", " JOIN agreego.entity t1_obj_t2_lines_t2 ON t1_obj_t2_lines_t2.id = t1_obj_t2_lines_t1.id", " WHERE", " NOT t1_obj_t2_lines_t1.archived", " AND t1_obj_t2_lines_t1.parent_id = t1_obj_t2.id),", " 'name', t1_obj_t2.name,", " 'total', t1_obj_t1.total,", " 'type', t1_obj_t2.type", ")", "FROM agreego.order t1_obj_t1", "JOIN agreego.entity t1_obj_t2 ON t1_obj_t2.id = t1_obj_t1.id", "WHERE NOT t1_obj_t1.archived)" ] ] } } ] } ]