[ { "description": "Queryer Execution", "database": { "puncs": [ { "name": "get_entities", "schemas": [ { "$id": "get_entities.response", "$family": "organization" } ] }, { "name": "get_persons", "schemas": [ { "$id": "get_persons.response", "$family": "base.person" } ] } ], "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" }, "created": { "type": "boolean" } } } ], "fields": [ "id", "type", "name", "archived", "created_at" ], "variations": [ "address", "bot", "contact", "email_address", "entity", "order", "order_line", "organization", "person", "phone_number", "relationship" ] }, { "name": "organization", "hierarchy": [ "organization", "entity" ], "fields": [ "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "organization": [] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "name": "text", "created_at": "timestamptz" }, "lookup_fields": [ "id" ], "null_fields": [], "default_fields": [ "id", "type", "created_at", "archived" ], "variations": [ "bot", "organization", "person" ] }, { "name": "bot", "hierarchy": [ "bot", "organization", "entity" ], "fields": [ "token", "id", "type", "name", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "organization": [], "bot": [ "token" ] }, "field_types": { "id": "uuid", "type": "text", "archived": "boolean", "name": "text", "token": "text", "created_at": "timestamptz" }, "schemas": [ { "$id": "bot", "$ref": "organization", "properties": { "token": { "type": "string" } } } ], "variations": [ "bot" ] }, { "name": "person", "hierarchy": [ "person", "organization", "entity" ], "fields": [ "first_name", "last_name", "id", "type", "name", "age", "archived", "created_at" ], "grouped_fields": { "entity": [ "id", "type", "name", "archived", "created_at" ], "organization": [], "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": "organization", "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" }, "age": { "type": "number" } } }, { "$id": "light.person", "$ref": "base.person", "properties": {} }, { "$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" } ] } } } } } } ], "variations": [ "person" ] }, { "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": {} } ], "variations": [ "contact", "relationship" ] }, { "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" } } } ], "variations": [ "contact" ] }, { "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" } } } ], "variations": [ "phone_number" ] }, { "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" } } } ], "variations": [ "email_address" ] }, { "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" } } } ], "variations": [ "address" ] }, { "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", "name", "total", "customer_id", "created_at", "created_by", "modified_at", "modified_by", "archived" ], "grouped_fields": { "order": [ "id", "type", "total", "customer_id" ], "entity": [ "id", "type", "name", "created_at", "created_by", "modified_at", "modified_by", "archived" ] }, "lookup_fields": [ "id" ], "historical": true, "relationship": false, "field_types": { "id": "uuid", "type": "text", "name": "text", "archived": "boolean", "total": "numeric", "customer_id": "uuid", "created_at": "timestamptz", "created_by": "uuid", "modified_at": "timestamptz", "modified_by": "uuid" }, "variations": [ "order" ] }, { "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", "name", "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", "name", "created_at", "created_by", "modified_at", "modified_by", "archived" ] }, "lookup_fields": [], "historical": true, "relationship": false, "field_types": { "id": "uuid", "type": "text", "name": "text", "archived": "boolean", "order_id": "uuid", "product": "text", "price": "numeric", "created_at": "timestamptz", "created_by": "uuid", "modified_at": "timestamptz", "modified_by": "uuid" }, "variations": [ "order_line" ] } ], "schemas": [ { "$id": "entity", "type": "object", "properties": {} }, { "$id": "organization", "type": "object", "$ref": "entity", "properties": {} }, { "$id": "bot", "type": "object", "$ref": "bot", "properties": {} }, { "$id": "person", "type": "object", "$ref": "base.person", "properties": {} } ] }, "tests": [ { "description": "Simple entity select", "action": "query", "schema_id": "entity", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'archived', entity_1.archived,", " 'created_at', entity_1.created_at,", " 'id', entity_1.id,", " 'name', entity_1.name,", " 'type', entity_1.type)", "FROM agreego.entity entity_1", "WHERE NOT entity_1.archived)" ] ] } }, { "description": "Simple entity select on root stem", "action": "query", "schema_id": "entity", "stem": "", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'archived', entity_1.archived,", " 'created_at', entity_1.created_at,", " 'id', entity_1.id,", " 'name', entity_1.name,", " 'type', entity_1.type)", "FROM agreego.entity entity_1", "WHERE NOT entity_1.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', entity_1.archived,", " 'created_at', entity_1.created_at,", " 'id', entity_1.id,", " 'name', entity_1.name,", " 'type', entity_1.type", ")", "FROM agreego.entity entity_1", "WHERE", " NOT entity_1.archived", " AND entity_1.archived = ($1#>>'{}')::boolean", " AND entity_1.archived != ($2#>>'{}')::boolean", " AND entity_1.created_at = ($3#>>'{}')::timestamptz", " AND entity_1.created_at > ($4#>>'{}')::timestamptz", " AND entity_1.created_at >= ($5#>>'{}')::timestamptz", " AND entity_1.created_at < ($6#>>'{}')::timestamptz", " AND entity_1.created_at <= ($7#>>'{}')::timestamptz", " AND entity_1.created_at != ($8#>>'{}')::timestamptz", " AND entity_1.id = ($9#>>'{}')::uuid", " AND entity_1.id IN (SELECT value::uuid FROM jsonb_array_elements_text(($10#>>'{}')::jsonb))", " AND entity_1.id != ($11#>>'{}')::uuid", " AND entity_1.id NOT IN (SELECT value::uuid FROM jsonb_array_elements_text(($12#>>'{}')::jsonb))", " AND entity_1.name ILIKE $13#>>'{}'", " AND entity_1.name > ($14#>>'{}')", " AND entity_1.name >= ($15#>>'{}')", " AND entity_1.name IN (SELECT value FROM jsonb_array_elements_text(($16#>>'{}')::jsonb))", " AND entity_1.name < ($17#>>'{}')", " AND entity_1.name <= ($18#>>'{}')", " AND entity_1.name NOT ILIKE $19#>>'{}'", " AND entity_1.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', person_1.age,", " 'archived', entity_3.archived,", " 'created_at', entity_3.created_at,", " 'first_name', person_1.first_name,", " 'id', entity_3.id,", " 'last_name', person_1.last_name,", " 'name', entity_3.name,", " 'type', entity_3.type)", "FROM agreego.person person_1", "JOIN agreego.organization organization_2 ON organization_2.id = person_1.id", "JOIN agreego.entity entity_3 ON entity_3.id = organization_2.id", "WHERE NOT entity_3.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', entity_6.archived,", " 'created_at', entity_6.created_at,", " 'id', entity_6.id,", " 'is_primary', contact_4.is_primary,", " 'name', entity_6.name,", " 'target',", " (SELECT jsonb_build_object(", " 'archived', entity_8.archived,", " 'city', address_7.city,", " 'created_at', entity_8.created_at,", " 'id', entity_8.id,", " 'name', entity_8.name,", " 'type', entity_8.type", " )", " FROM agreego.address address_7", " JOIN agreego.entity entity_8 ON entity_8.id = address_7.id", " WHERE", " NOT entity_8.archived", " AND relationship_5.target_id = address_7.id),", " 'type', entity_6.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_4", " JOIN agreego.relationship relationship_5 ON relationship_5.id = contact_4.id", " JOIN agreego.entity entity_6 ON entity_6.id = relationship_5.id", " WHERE", " NOT entity_6.archived", " AND contact_4.parent_id = entity_3.id),", " 'age', person_1.age,", " 'archived', entity_3.archived,", " 'contacts',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_11.archived,", " 'created_at', entity_11.created_at,", " 'id', entity_11.id,", " 'is_primary', contact_9.is_primary,", " 'name', entity_11.name,", " 'target', CASE", " WHEN entity_11.target_type = 'address' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_17.archived,", " 'city', address_16.city,", " 'created_at', entity_17.created_at,", " 'id', entity_17.id,", " 'name', entity_17.name,", " 'type', entity_17.type", " )", " FROM agreego.address address_16", " JOIN agreego.entity entity_17 ON entity_17.id = address_16.id", " WHERE", " NOT entity_17.archived", " AND relationship_10.target_id = address_16.id))", " WHEN entity_11.target_type = 'email_address' THEN", " ((SELECT jsonb_build_object(", " 'address', email_address_14.address,", " 'archived', entity_15.archived,", " 'created_at', entity_15.created_at,", " 'id', entity_15.id,", " 'name', entity_15.name,", " 'type', entity_15.type", " )", " FROM agreego.email_address email_address_14", " JOIN agreego.entity entity_15 ON entity_15.id = email_address_14.id", " WHERE", " NOT entity_15.archived", " AND relationship_10.target_id = email_address_14.id))", " WHEN entity_11.target_type = 'phone_number' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_13.archived,", " 'created_at', entity_13.created_at,", " 'id', entity_13.id,", " 'name', entity_13.name,", " 'number', phone_number_12.number,", " 'type', entity_13.type", " )", " FROM agreego.phone_number phone_number_12", " JOIN agreego.entity entity_13 ON entity_13.id = phone_number_12.id", " WHERE", " NOT entity_13.archived", " AND relationship_10.target_id = phone_number_12.id))", " ELSE NULL END,", " 'type', entity_11.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_9", " JOIN agreego.relationship relationship_10 ON relationship_10.id = contact_9.id", " JOIN agreego.entity entity_11 ON entity_11.id = relationship_10.id", " WHERE", " NOT entity_11.archived", " AND contact_9.parent_id = entity_3.id),", " 'created_at', entity_3.created_at,", " 'email_addresses',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_20.archived,", " 'created_at', entity_20.created_at,", " 'id', entity_20.id,", " 'is_primary', contact_18.is_primary,", " 'name', entity_20.name,", " 'target',", " (SELECT jsonb_build_object(", " 'address', email_address_21.address,", " 'archived', entity_22.archived,", " 'created_at', entity_22.created_at,", " 'id', entity_22.id,", " 'name', entity_22.name,", " 'type', entity_22.type", " )", " FROM agreego.email_address email_address_21", " JOIN agreego.entity entity_22 ON entity_22.id = email_address_21.id", " WHERE", " NOT entity_22.archived", " AND relationship_19.target_id = email_address_21.id),", " 'type', entity_20.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_18", " JOIN agreego.relationship relationship_19 ON relationship_19.id = contact_18.id", " JOIN agreego.entity entity_20 ON entity_20.id = relationship_19.id", " WHERE", " NOT entity_20.archived", " AND contact_18.parent_id = entity_3.id),", " 'first_name', person_1.first_name,", " 'id', entity_3.id,", " 'last_name', person_1.last_name,", " 'name', entity_3.name,", " 'phone_numbers',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_25.archived,", " 'created_at', entity_25.created_at,", " 'id', entity_25.id,", " 'is_primary', contact_23.is_primary,", " 'name', entity_25.name,", " 'target',", " (SELECT jsonb_build_object(", " 'archived', entity_27.archived,", " 'created_at', entity_27.created_at,", " 'id', entity_27.id,", " 'name', entity_27.name,", " 'number', phone_number_26.number,", " 'type', entity_27.type", " )", " FROM agreego.phone_number phone_number_26", " JOIN agreego.entity entity_27 ON entity_27.id = phone_number_26.id", " WHERE", " NOT entity_27.archived", " AND relationship_24.target_id = phone_number_26.id),", " 'type', entity_25.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_23", " JOIN agreego.relationship relationship_24 ON relationship_24.id = contact_23.id", " JOIN agreego.entity entity_25 ON entity_25.id = relationship_24.id", " WHERE", " NOT entity_25.archived", " AND contact_23.parent_id = entity_3.id),", " 'type', entity_3.type", ")", "FROM agreego.person person_1", "JOIN agreego.organization organization_2 ON organization_2.id = person_1.id", "JOIN agreego.entity entity_3 ON entity_3.id = organization_2.id", "WHERE NOT entity_3.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 }, "contacts.#.is_primary": { "$eq": true }, "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" ] }, "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" ] }, "last_name": { "$eq": "%Doe%", "$ne": "%Smith%" }, "phone_numbers.#.target.number": { "$eq": "555-1234" } }, "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'addresses',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_6.archived,", " 'created_at', entity_6.created_at,", " 'id', entity_6.id,", " 'is_primary', contact_4.is_primary,", " 'name', entity_6.name,", " 'target',", " (SELECT jsonb_build_object(", " 'archived', entity_8.archived,", " 'city', address_7.city,", " 'created_at', entity_8.created_at,", " 'id', entity_8.id,", " 'name', entity_8.name,", " 'type', entity_8.type", " )", " FROM agreego.address address_7", " JOIN agreego.entity entity_8 ON entity_8.id = address_7.id", " WHERE", " NOT entity_8.archived", " AND relationship_5.target_id = address_7.id),", " 'type', entity_6.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_4", " JOIN agreego.relationship relationship_5 ON relationship_5.id = contact_4.id", " JOIN agreego.entity entity_6 ON entity_6.id = relationship_5.id", " WHERE", " NOT entity_6.archived", " AND contact_4.parent_id = entity_3.id),", " 'age', person_1.age,", " 'archived', entity_3.archived,", " 'contacts',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_11.archived,", " 'created_at', entity_11.created_at,", " 'id', entity_11.id,", " 'is_primary', contact_9.is_primary,", " 'name', entity_11.name,", " 'target', CASE", " WHEN entity_11.target_type = 'address' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_17.archived,", " 'city', address_16.city,", " 'created_at', entity_17.created_at,", " 'id', entity_17.id,", " 'name', entity_17.name,", " 'type', entity_17.type", " )", " FROM agreego.address address_16", " JOIN agreego.entity entity_17 ON entity_17.id = address_16.id", " WHERE", " NOT entity_17.archived", " AND relationship_10.target_id = address_16.id))", " WHEN entity_11.target_type = 'email_address' THEN", " ((SELECT jsonb_build_object(", " 'address', email_address_14.address,", " 'archived', entity_15.archived,", " 'created_at', entity_15.created_at,", " 'id', entity_15.id,", " 'name', entity_15.name,", " 'type', entity_15.type", " )", " FROM agreego.email_address email_address_14", " JOIN agreego.entity entity_15 ON entity_15.id = email_address_14.id", " WHERE", " NOT entity_15.archived", " AND relationship_10.target_id = email_address_14.id))", " WHEN entity_11.target_type = 'phone_number' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_13.archived,", " 'created_at', entity_13.created_at,", " 'id', entity_13.id,", " 'name', entity_13.name,", " 'number', phone_number_12.number,", " 'type', entity_13.type", " )", " FROM agreego.phone_number phone_number_12", " JOIN agreego.entity entity_13 ON entity_13.id = phone_number_12.id", " WHERE", " NOT entity_13.archived", " AND relationship_10.target_id = phone_number_12.id))", " ELSE NULL END,", " 'type', entity_11.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_9", " JOIN agreego.relationship relationship_10 ON relationship_10.id = contact_9.id", " JOIN agreego.entity entity_11 ON entity_11.id = relationship_10.id", " WHERE", " NOT entity_11.archived", " AND contact_9.is_primary = ($11#>>'{}')::boolean", " AND contact_9.parent_id = entity_3.id),", " 'created_at', entity_3.created_at,", " 'email_addresses',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_20.archived,", " 'created_at', entity_20.created_at,", " 'id', entity_20.id,", " 'is_primary', contact_18.is_primary,", " 'name', entity_20.name,", " 'target',", " (SELECT jsonb_build_object(", " 'address', email_address_21.address,", " 'archived', entity_22.archived,", " 'created_at', entity_22.created_at,", " 'id', entity_22.id,", " 'name', entity_22.name,", " 'type', entity_22.type", " )", " FROM agreego.email_address email_address_21", " JOIN agreego.entity entity_22 ON entity_22.id = email_address_21.id", " WHERE", " NOT entity_22.archived", " AND relationship_19.target_id = email_address_21.id),", " 'type', entity_20.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_18", " JOIN agreego.relationship relationship_19 ON relationship_19.id = contact_18.id", " JOIN agreego.entity entity_20 ON entity_20.id = relationship_19.id", " WHERE", " NOT entity_20.archived", " AND contact_18.parent_id = entity_3.id),", " 'first_name', person_1.first_name,", " 'id', entity_3.id,", " 'last_name', person_1.last_name,", " 'name', entity_3.name,", " 'phone_numbers',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_25.archived,", " 'created_at', entity_25.created_at,", " 'id', entity_25.id,", " 'is_primary', contact_23.is_primary,", " 'name', entity_25.name,", " 'target',", " (SELECT jsonb_build_object(", " 'archived', entity_27.archived,", " 'created_at', entity_27.created_at,", " 'id', entity_27.id,", " 'name', entity_27.name,", " 'number', phone_number_26.number,", " 'type', entity_27.type", " )", " FROM agreego.phone_number phone_number_26", " JOIN agreego.entity entity_27 ON entity_27.id = phone_number_26.id", " WHERE", " NOT entity_27.archived", " AND phone_number_26.number ILIKE $32#>>'{}'", " AND relationship_24.target_id = phone_number_26.id),", " 'type', entity_25.type", " )), '[]'::jsonb)", " FROM agreego.contact contact_23", " JOIN agreego.relationship relationship_24 ON relationship_24.id = contact_23.id", " JOIN agreego.entity entity_25 ON entity_25.id = relationship_24.id", " WHERE", " NOT entity_25.archived", " AND contact_23.parent_id = entity_3.id),", " 'type', entity_3.type", ")", "FROM agreego.person person_1", "JOIN agreego.organization organization_2 ON organization_2.id = person_1.id", "JOIN agreego.entity entity_3 ON entity_3.id = organization_2.id", "WHERE", " NOT entity_3.archived", " AND person_1.age = ($1#>>'{}')::numeric", " AND person_1.age > ($2#>>'{}')::numeric", " AND person_1.age >= ($3#>>'{}')::numeric", " AND person_1.age IN (SELECT value::numeric FROM jsonb_array_elements_text(($4#>>'{}')::jsonb))", " AND person_1.age < ($5#>>'{}')::numeric", " AND person_1.age <= ($6#>>'{}')::numeric", " AND person_1.age != ($7#>>'{}')::numeric", " AND person_1.age NOT IN (SELECT value::numeric FROM jsonb_array_elements_text(($8#>>'{}')::jsonb))", " AND entity_3.archived = ($9#>>'{}')::boolean", " AND entity_3.archived != ($10#>>'{}')::boolean", " AND entity_3.created_at = ($12#>>'{}')::timestamptz", " AND entity_3.created_at > ($13#>>'{}')::timestamptz", " AND entity_3.created_at >= ($14#>>'{}')::timestamptz", " AND entity_3.created_at < ($15#>>'{}')::timestamptz", " AND entity_3.created_at <= ($16#>>'{}')::timestamptz", " AND entity_3.created_at != ($17#>>'{}')::timestamptz", " AND person_1.first_name ILIKE $18#>>'{}'", " AND person_1.first_name > ($19#>>'{}')", " AND person_1.first_name >= ($20#>>'{}')", " AND person_1.first_name IN (SELECT value FROM jsonb_array_elements_text(($21#>>'{}')::jsonb))", " AND person_1.first_name < ($22#>>'{}')", " AND person_1.first_name <= ($23#>>'{}')", " AND person_1.first_name NOT ILIKE $24#>>'{}'", " AND person_1.first_name NOT IN (SELECT value FROM jsonb_array_elements_text(($25#>>'{}')::jsonb))", " AND entity_3.id = ($26#>>'{}')::uuid", " AND entity_3.id IN (SELECT value::uuid FROM jsonb_array_elements_text(($27#>>'{}')::jsonb))", " AND entity_3.id != ($28#>>'{}')::uuid", " AND entity_3.id NOT IN (SELECT value::uuid FROM jsonb_array_elements_text(($29#>>'{}')::jsonb))", " AND person_1.last_name ILIKE $30#>>'{}'", " AND person_1.last_name NOT ILIKE $31#>>'{}')" ] ] } }, { "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', entity_3.archived,", " 'created_at', entity_3.created_at,", " 'id', entity_3.id,", " 'is_primary', contact_1.is_primary,", " 'name', entity_3.name,", " 'target',", " (SELECT jsonb_build_object(", " 'archived', entity_5.archived,", " 'created_at', entity_5.created_at,", " 'id', entity_5.id,", " 'name', entity_5.name,", " 'number', phone_number_4.number,", " 'type', entity_5.type", " )", " FROM agreego.phone_number phone_number_4", " JOIN agreego.entity entity_5 ON entity_5.id = phone_number_4.id", " WHERE", " NOT entity_5.archived", " AND relationship_2.target_id = phone_number_4.id", " ),", " 'type', entity_3.type", ")", "FROM agreego.contact contact_1", "JOIN agreego.relationship relationship_2 ON relationship_2.id = contact_1.id", "JOIN agreego.entity entity_3 ON entity_3.id = relationship_2.id", "WHERE NOT entity_3.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', entity_2.archived,", " 'created_at', entity_2.created_at,", " 'id', entity_2.id,", " 'name', entity_2.name,", " 'number', phone_number_1.number,", " 'type', entity_2.type", ")", "FROM agreego.phone_number phone_number_1", "JOIN agreego.entity entity_2 ON entity_2.id = phone_number_1.id", "WHERE NOT entity_2.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', email_address_1.address,", " 'archived', entity_2.archived,", " 'created_at', entity_2.created_at,", " 'id', entity_2.id,", " 'name', entity_2.name,", " 'type', entity_2.type", ")", "FROM agreego.email_address email_address_1", "JOIN agreego.entity entity_2 ON entity_2.id = email_address_1.id", "WHERE NOT entity_2.archived)" ] ] } }, { "description": "Order select with customer and lines", "action": "query", "schema_id": "full.order", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'archived', entity_2.archived,", " 'created_at', entity_2.created_at,", " 'customer',", " (SELECT jsonb_build_object(", " 'age', person_3.age,", " 'archived', entity_5.archived,", " 'created_at', entity_5.created_at,", " 'first_name', person_3.first_name,", " 'id', entity_5.id,", " 'last_name', person_3.last_name,", " 'name', entity_5.name,", " 'type', entity_5.type", " )", " FROM agreego.person person_3", " JOIN agreego.organization organization_4 ON organization_4.id = person_3.id", " JOIN agreego.entity entity_5 ON entity_5.id = organization_4.id", " WHERE", " NOT entity_5.archived", " AND order_1.customer_id = person_3.id),", " 'customer_id', order_1.customer_id,", " 'id', entity_2.id,", " 'lines',", " (SELECT COALESCE(jsonb_agg(jsonb_build_object(", " 'archived', entity_7.archived,", " 'created_at', entity_7.created_at,", " 'id', entity_7.id,", " 'name', entity_7.name,", " 'order_id', order_line_6.order_id,", " 'price', order_line_6.price,", " 'product', order_line_6.product,", " 'type', entity_7.type", " )), '[]'::jsonb)", " FROM agreego.order_line order_line_6", " JOIN agreego.entity entity_7 ON entity_7.id = order_line_6.id", " WHERE", " NOT entity_7.archived", " AND order_line_6.order_id = order_1.id),", " 'name', entity_2.name,", " 'total', order_1.total,", " 'type', entity_2.type", ")", "FROM agreego.order order_1", "JOIN agreego.entity entity_2 ON entity_2.id = order_1.id", "WHERE NOT entity_2.archived)" ] ] } }, { "description": "Base entity family select on polymorphic tree", "action": "query", "schema_id": "get_entities.response", "expect": { "success": true, "sql": [ [ "(SELECT jsonb_build_object(", " 'id', organization_1.id,", " 'type', CASE", " WHEN organization_1.type = 'bot' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_5.archived,", " 'created_at', entity_5.created_at,", " 'id', entity_5.id,", " 'name', entity_5.name,", " 'token', bot_3.token,", " 'type', entity_5.type", " )", " FROM agreego.bot bot_3", " JOIN agreego.organization organization_4 ON organization_4.id = bot_3.id", " JOIN agreego.entity entity_5 ON entity_5.id = organization_4.id", " WHERE NOT entity_5.archived))", " WHEN organization_1.type = 'organization' THEN", " ((SELECT jsonb_build_object(", " 'archived', entity_7.archived,", " 'created_at', entity_7.created_at,", " 'id', entity_7.id,", " 'name', entity_7.name,", " 'type', entity_7.type", " )", " FROM agreego.organization organization_6", " JOIN agreego.entity entity_7 ON entity_7.id = organization_6.id", " WHERE NOT entity_7.archived))", " WHEN organization_1.type = 'person' THEN", " ((SELECT jsonb_build_object(", " 'age', person_8.age,", " 'archived', entity_10.archived,", " 'created_at', entity_10.created_at,", " 'first_name', person_8.first_name,", " 'id', entity_10.id,", " 'last_name', person_8.last_name,", " 'name', entity_10.name,", " 'type', entity_10.type", " )", " FROM agreego.person person_8", " JOIN agreego.organization organization_9 ON organization_9.id = person_8.id", " JOIN agreego.entity entity_10 ON entity_10.id = organization_9.id", " WHERE NOT entity_10.archived))", " ELSE NULL END", ")", "FROM agreego.organization organization_1", "JOIN agreego.entity entity_2 ON entity_2.id = organization_1.id", "WHERE NOT entity_2.archived)" ] ] } } ] } ]