Files
jspg/fixtures/queryer.json

2443 lines
87 KiB
JSON

[
{
"description": "Queryer Execution",
"database": {
"puncs": [
{
"name": "get_organization",
"schemas": {
"get_organization.response": {
"type": "organization"
}
}
},
{
"name": "get_organizations",
"schemas": {
"get_organizations.response": {
"type": "array",
"items": {
"family": "organization"
}
}
}
},
{
"name": "get_light_organization",
"schemas": {
"get_light_organization.response": {
"family": "light.organization"
}
}
},
{
"name": "get_full_organization",
"schemas": {
"get_full_organization.response": {
"family": "full.organization"
}
}
},
{
"name": "get_orders",
"schemas": {
"get_orders.response": {
"type": "array",
"items": {
"type": "light.order"
}
}
}
},
{
"name": "get_widgets",
"schemas": {
"get_widgets.response": {
"type": "array",
"items": {
"family": "widget"
}
}
}
},
{
"name": "get_counterparty_orders",
"schemas": {
"get_counterparty_orders.response": {
"type": "array",
"items": {
"type": "counterparty.order"
}
}
}
}
],
"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_person",
"source_type": "order",
"source_columns": [
"customer_id"
],
"destination_type": "person",
"destination_columns": [
"id"
],
"prefix": "customer"
},
{
"id": "22222222-2222-2222-2222-222222222227",
"type": "relation",
"constraint": "fk_order_counterparty_entity",
"source_type": "order",
"source_columns": [
"counterparty_id",
"counterparty_type"
],
"destination_type": "entity",
"destination_columns": [
"id",
"type"
],
"prefix": "counterparty"
},
{
"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"
]
},
{
"id": "33333333-3333-3333-3333-333333333334",
"type": "relation",
"constraint": "fk_invoice_line_invoice",
"source_type": "invoice_line",
"source_columns": [
"invoice_id"
],
"destination_type": "invoice",
"destination_columns": [
"id"
]
}
],
"types": [
{
"name": "entity",
"hierarchy": [
"entity"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
]
},
"field_types": {
"id": "uuid",
"archived": "boolean",
"created_at": "timestamptz",
"type": "text"
},
"schemas": {
"entity": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"type": {
"type": "string"
},
"archived": {
"type": "boolean"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"created": {
"type": "boolean"
}
}
}
},
"fields": [
"id",
"type",
"archived",
"created_at"
],
"variations": [
"address",
"bot",
"contact",
"email_address",
"entity",
"order",
"order_line",
"organization",
"person",
"phone_number",
"relationship"
]
},
{
"name": "organization",
"hierarchy": [
"entity",
"organization"
],
"fields": [
"id",
"type",
"name",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"organization": [
"name"
]
},
"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"
],
"schemas": {
"organization": {
"type": "entity",
"properties": {
"name": {
"type": "string"
}
}
}
}
},
{
"name": "bot",
"hierarchy": [
"entity",
"organization",
"bot"
],
"fields": [
"token",
"id",
"type",
"name",
"archived",
"created_at",
"token",
"role"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"organization": [
"name"
],
"bot": [
"token",
"role"
]
},
"field_types": {
"id": "uuid",
"type": "text",
"archived": "boolean",
"name": "text",
"token": "text",
"role": "text",
"created_at": "timestamptz"
},
"schemas": {
"bot": {
"type": "organization",
"properties": {
"token": {
"type": "string"
},
"role": {
"type": "string"
}
}
},
"light.bot": {
"type": "organization",
"properties": {
"token": {
"type": "string"
}
}
}
},
"variations": [
"bot"
]
},
{
"name": "person",
"hierarchy": [
"entity",
"organization",
"person"
],
"fields": [
"first_name",
"last_name",
"id",
"type",
"name",
"age",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"organization": [
"name"
],
"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": {
"person": {
"type": "organization",
"properties": {
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"age": {
"type": "number"
}
}
},
"light.person": {
"type": "organization",
"properties": {
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
}
}
},
"full.person": {
"type": "person",
"properties": {
"phone_numbers": {
"type": "array",
"items": {
"type": "contact",
"properties": {
"target": {
"type": "phone_number"
}
}
}
},
"email_addresses": {
"type": "array",
"items": {
"type": "contact",
"properties": {
"target": {
"type": "email_address"
}
}
}
},
"addresses": {
"type": "array",
"items": {
"type": "contact",
"properties": {
"target": {
"type": "address"
}
}
}
},
"contacts": {
"type": "array",
"items": {
"type": "contact",
"properties": {
"target": {
"oneOf": [
{
"type": "phone_number"
},
{
"type": "email_address"
},
{
"type": "address"
}
]
}
}
}
}
}
}
},
"variations": [
"person"
]
},
{
"name": "relationship",
"relationship": true,
"hierarchy": [
"entity",
"relationship"
],
"fields": [
"source_id",
"source_type",
"target_id",
"target_type",
"id",
"type",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"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",
"created_at": "timestamptz"
},
"schemas": {
"relationship": {
"type": "entity",
"properties": {}
}
},
"variations": [
"contact",
"relationship"
]
},
{
"name": "contact",
"relationship": true,
"hierarchy": [
"entity",
"relationship",
"contact"
],
"fields": [
"is_primary",
"source_id",
"source_type",
"target_id",
"target_type",
"id",
"type",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"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",
"created_at": "timestamptz"
},
"schemas": {
"contact": {
"type": "relationship",
"properties": {
"is_primary": {
"type": "boolean"
}
}
}
},
"variations": [
"contact"
]
},
{
"name": "phone_number",
"hierarchy": [
"entity",
"phone_number"
],
"fields": [
"number",
"id",
"type",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"phone_number": [
"number"
]
},
"field_types": {
"id": "uuid",
"type": "text",
"archived": "boolean",
"number": "text",
"created_at": "timestamptz"
},
"schemas": {
"phone_number": {
"type": "entity",
"properties": {
"number": {
"type": "string"
}
}
}
},
"variations": [
"phone_number"
]
},
{
"name": "email_address",
"hierarchy": [
"entity",
"email_address"
],
"fields": [
"address",
"id",
"type",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"email_address": [
"address"
]
},
"field_types": {
"id": "uuid",
"type": "text",
"archived": "boolean",
"address": "text",
"created_at": "timestamptz"
},
"schemas": {
"email_address": {
"type": "entity",
"properties": {
"address": {
"type": "string"
}
}
}
},
"variations": [
"email_address"
]
},
{
"name": "address",
"hierarchy": [
"entity",
"address"
],
"fields": [
"city",
"id",
"type",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"address": [
"city"
]
},
"field_types": {
"id": "uuid",
"type": "text",
"archived": "boolean",
"city": "text",
"created_at": "timestamptz"
},
"schemas": {
"address": {
"type": "entity",
"properties": {
"city": {
"type": "string"
}
}
}
},
"variations": [
"address"
]
},
{
"name": "order",
"schemas": {
"order": {
"type": "entity",
"properties": {
"total": {
"type": "number"
},
"customer_id": {
"type": "string"
}
}
},
"counterparty.order": {
"type": "order",
"properties": {
"counterparty": {
"family": "organization"
}
}
},
"light.order": {
"type": "order",
"properties": {
"customer": {
"type": "person"
}
}
},
"full.order": {
"type": "order",
"properties": {
"customer": {
"type": "person"
},
"lines": {
"type": "array",
"items": {
"type": "order_line"
}
}
}
}
},
"hierarchy": [
"entity",
"order"
],
"fields": [
"id",
"type",
"total",
"customer_id",
"created_at",
"archived",
"counterparty_id",
"counterparty_type"
],
"grouped_fields": {
"order": [
"id",
"type",
"total",
"customer_id",
"counterparty_id",
"counterparty_type"
],
"entity": [
"id",
"type",
"created_at",
"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",
"counterparty_id": "uuid",
"counterparty_type": "text"
},
"variations": [
"order"
]
},
{
"name": "order_line",
"schemas": {
"order_line": {
"type": "entity",
"properties": {
"order_id": {
"type": "string"
},
"product": {
"type": "string"
},
"price": {
"type": "number"
}
}
}
},
"hierarchy": [
"entity",
"order_line"
],
"fields": [
"id",
"type",
"order_id",
"product",
"price",
"created_at",
"archived"
],
"grouped_fields": {
"order_line": [
"id",
"type",
"order_id",
"product",
"price"
],
"entity": [
"id",
"type",
"created_at",
"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"
},
"variations": [
"order_line"
]
},
{
"name": "widget",
"hierarchy": [
"entity",
"widget"
],
"fields": [
"id",
"type",
"kind",
"archived",
"created_at"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"widget": [
"kind"
]
},
"field_types": {
"id": "uuid",
"type": "text",
"kind": "text",
"archived": "boolean",
"created_at": "timestamptz"
},
"variations": [
"widget"
],
"schemas": {
"widget": {
"type": "entity",
"properties": {
"kind": {
"type": "string"
}
}
},
"stock.widget": {
"type": "widget",
"properties": {}
},
"tasks.widget": {
"type": "widget",
"properties": {}
}
}
},
{
"name": "account",
"hierarchy": [
"entity",
"account"
],
"fields": [
"id",
"type",
"kind",
"archived",
"created_at",
"routing_number",
"card_number"
],
"grouped_fields": {
"entity": [
"id",
"type",
"archived",
"created_at"
],
"account": [
"kind",
"routing_number",
"card_number"
]
},
"field_types": {
"id": "uuid",
"type": "text",
"kind": "text",
"archived": "boolean",
"created_at": "timestamptz",
"routing_number": "text",
"card_number": "text"
},
"variations": [
"account"
],
"schemas": {
"account": {
"type": "entity",
"properties": {
"kind": {
"type": "string"
}
},
"cases": [
{
"when": {
"properties": {
"kind": {
"const": "checking"
}
}
},
"then": {
"properties": {
"routing_number": {
"type": "string"
}
}
}
},
{
"when": {
"properties": {
"kind": {
"const": "credit"
}
}
},
"then": {
"properties": {
"card_number": {
"type": "string"
}
}
}
}
]
}
}
},
{
"name": "invoice",
"schemas": {
"invoice": {
"type": "entity",
"properties": {
"total": {
"type": "number"
},
"lines": {
"type": "array",
"items": {
"type": "invoice_line"
}
},
"metadata_line": {
"type": "invoice_line"
},
"metadata_lines": {
"type": "array",
"items": {
"type": "invoice_line"
}
},
"metadata_nested_line": {
"type": "object",
"properties": {
"line": {
"type": "invoice_line"
}
}
},
"metadata_nested_lines": {
"type": "object",
"properties": {
"lines": {
"type": "array",
"items": {
"type": "invoice_line"
}
}
}
}
}
}
},
"hierarchy": [
"entity",
"invoice"
],
"fields": [
"id",
"type",
"total",
"metadata_line",
"metadata_lines",
"metadata_nested_line",
"metadata_nested_lines",
"created_at",
"archived"
],
"grouped_fields": {
"invoice": [
"id",
"type",
"total",
"metadata_line",
"metadata_lines",
"metadata_nested_line",
"metadata_nested_lines"
],
"entity": [
"id",
"type",
"created_at",
"archived"
]
},
"lookup_fields": [
"id"
],
"historical": true,
"relationship": false,
"field_types": {
"id": "uuid",
"type": "text",
"archived": "boolean",
"total": "numeric",
"metadata_line": "jsonb",
"metadata_lines": "jsonb",
"metadata_nested_line": "jsonb",
"metadata_nested_lines": "jsonb",
"created_at": "timestamptz",
"created_by": "uuid",
"modified_at": "timestamptz",
"modified_by": "uuid"
},
"variations": [
"invoice"
]
},
{
"name": "invoice_line",
"schemas": {
"invoice_line": {
"type": "entity",
"properties": {
"invoice_id": {
"type": "string"
},
"price": {
"type": "number"
}
}
}
},
"hierarchy": [
"entity",
"invoice_line"
],
"fields": [
"id",
"type",
"invoice_id",
"price",
"created_at",
"archived"
],
"grouped_fields": {
"invoice_line": [
"id",
"type",
"invoice_id",
"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",
"invoice_id": "uuid",
"price": "numeric",
"created_at": "timestamptz"
},
"variations": [
"invoice_line"
]
}
]
},
"tests": [
{
"description": "Simple entity select",
"action": "query",
"schema_id": "entity",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at",
" )",
" FROM agreego.entity entity_1",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Simple entity select with multiple filters",
"action": "query",
"schema_id": "entity",
"filter": {
"id": {
"$eq": "123e4567-e89b-12d3-a456-426614174000",
"$ne": "123e4567-e89b-12d3-a456-426614174001",
"$of": [
"123e4567-e89b-12d3-a456-426614174000"
],
"$nof": [
"123e4567-e89b-12d3-a456-426614174001"
]
},
"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_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at",
" )",
" 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 <> ($10 #>> '{}')::UUID",
" AND entity_1.id NOT IN (SELECT value::UUID FROM jsonb_array_elements_text(($11 #>> '{}')::jsonb))",
" AND entity_1.id IN (SELECT value::UUID FROM jsonb_array_elements_text(($12 #>> '{}')::jsonb))",
"))))"
]
]
}
},
{
"description": "Person select on base schema",
"action": "query",
"schema_id": "person",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'name', organization_2.name,",
" 'first_name', person_3.first_name,",
" 'last_name', person_3.last_name,",
" 'age', person_3.age",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" JOIN agreego.person person_3 ON person_3.id = organization_2.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Person select on full schema",
"action": "query",
"schema_id": "full.person",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'name', organization_2.name,",
" 'first_name', person_3.first_name,",
" 'last_name', person_3.last_name,",
" 'age', person_3.age,",
" 'phone_numbers', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_4.id,",
" 'type', entity_4.type,",
" 'archived', entity_4.archived,",
" 'created_at', entity_4.created_at,",
" 'is_primary', contact_6.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_7.id,",
" 'type', entity_7.type,",
" 'archived', entity_7.archived,",
" 'created_at', entity_7.created_at,",
" 'number', phone_number_8.number",
" )",
" FROM agreego.entity entity_7",
" JOIN agreego.phone_number phone_number_8 ON phone_number_8.id = entity_7.id",
" WHERE",
" NOT entity_7.archived",
" AND relationship_5.target_id = entity_7.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_4",
" JOIN agreego.relationship relationship_5 ON relationship_5.id = entity_4.id",
" JOIN agreego.contact contact_6 ON contact_6.id = relationship_5.id",
" WHERE",
" NOT entity_4.archived",
" AND relationship_5.target_type = 'phone_number'",
" AND relationship_5.source_id = entity_1.id",
" ),",
" 'email_addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_9.id,",
" 'type', entity_9.type,",
" 'archived', entity_9.archived,",
" 'created_at', entity_9.created_at,",
" 'is_primary', contact_11.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_12.id,",
" 'type', entity_12.type,",
" 'archived', entity_12.archived,",
" 'created_at', entity_12.created_at,",
" 'address', email_address_13.address",
" )",
" FROM agreego.entity entity_12",
" JOIN agreego.email_address email_address_13 ON email_address_13.id = entity_12.id",
" WHERE",
" NOT entity_12.archived",
" AND relationship_10.target_id = entity_12.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_9",
" JOIN agreego.relationship relationship_10 ON relationship_10.id = entity_9.id",
" JOIN agreego.contact contact_11 ON contact_11.id = relationship_10.id",
" WHERE",
" NOT entity_9.archived",
" AND relationship_10.target_type = 'email_address'",
" AND relationship_10.source_id = entity_1.id",
" ),",
" 'addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_14.id,",
" 'type', entity_14.type,",
" 'archived', entity_14.archived,",
" 'created_at', entity_14.created_at,",
" 'is_primary', contact_16.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_17.id,",
" 'type', entity_17.type,",
" 'archived', entity_17.archived,",
" 'created_at', entity_17.created_at,",
" 'city', address_18.city",
" )",
" FROM agreego.entity entity_17",
" JOIN agreego.address address_18 ON address_18.id = entity_17.id",
" WHERE",
" NOT entity_17.archived",
" AND relationship_15.target_id = entity_17.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_14",
" JOIN agreego.relationship relationship_15 ON relationship_15.id = entity_14.id",
" JOIN agreego.contact contact_16 ON contact_16.id = relationship_15.id",
" WHERE",
" NOT entity_14.archived",
" AND relationship_15.target_type = 'address'",
" AND relationship_15.source_id = entity_1.id",
" ),",
" 'contacts', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_19.id,",
" 'type', entity_19.type,",
" 'archived', entity_19.archived,",
" 'created_at', entity_19.created_at,",
" 'is_primary', contact_21.is_primary,",
" 'target', CASE",
" WHEN relationship_20.target_type = 'phone_number' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_22.id,",
" 'type', entity_22.type,",
" 'archived', entity_22.archived,",
" 'created_at', entity_22.created_at,",
" 'number', phone_number_23.number",
" )",
" FROM agreego.entity entity_22",
" JOIN agreego.phone_number phone_number_23 ON phone_number_23.id = entity_22.id",
" WHERE",
" NOT entity_22.archived",
" AND relationship_20.target_id = entity_22.id",
" ))",
" WHEN relationship_20.target_type = 'email_address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_24.id,",
" 'type', entity_24.type,",
" 'archived', entity_24.archived,",
" 'created_at', entity_24.created_at,",
" 'address', email_address_25.address",
" )",
" FROM agreego.entity entity_24",
" JOIN agreego.email_address email_address_25 ON email_address_25.id = entity_24.id",
" WHERE",
" NOT entity_24.archived",
" AND relationship_20.target_id = entity_24.id",
" ))",
" WHEN relationship_20.target_type = 'address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_26.id,",
" 'type', entity_26.type,",
" 'archived', entity_26.archived,",
" 'created_at', entity_26.created_at,",
" 'city', address_27.city",
" )",
" FROM agreego.entity entity_26",
" JOIN agreego.address address_27 ON address_27.id = entity_26.id",
" WHERE",
" NOT entity_26.archived",
" AND relationship_20.target_id = entity_26.id",
" ))",
" ELSE NULL",
" END",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_19",
" JOIN agreego.relationship relationship_20 ON relationship_20.id = entity_19.id",
" JOIN agreego.contact contact_21 ON contact_21.id = relationship_20.id",
" WHERE",
" NOT entity_19.archived",
" AND relationship_20.source_id = entity_1.id",
" )",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" JOIN agreego.person person_3 ON person_3.id = organization_2.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Person select on full schema with filters",
"action": "query",
"schema_id": "full.person",
"filter": {
"age": {
"$eq": 30,
"$gt": 20,
"$gte": 20,
"$of": [
30,
40
],
"$lt": 50,
"$lte": 50,
"$ne": 25,
"$nof": [
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",
"$of": [
"Jane",
"John"
],
"$lt": "Z",
"$lte": "Z",
"$ne": "Doe",
"$nof": [
"Bob"
]
},
"id": {
"$eq": "00000000-0000-0000-0000-000000000001",
"$of": [
"00000000-0000-0000-0000-000000000001"
],
"$ne": "00000000-0000-0000-0000-000000000002",
"$nof": [
"00000000-0000-0000-0000-000000000002"
]
},
"last_name": {
"$eq": "%Doe%",
"$ne": "%Smith%"
},
"phone_numbers": {
"target": {
"number": {
"$eq": "555-1234"
}
}
}
},
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'name', organization_2.name,",
" 'first_name', person_3.first_name,",
" 'last_name', person_3.last_name,",
" 'age', person_3.age,",
" 'phone_numbers', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_4.id,",
" 'type', entity_4.type,",
" 'archived', entity_4.archived,",
" 'created_at', entity_4.created_at,",
" 'is_primary', contact_6.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_7.id,",
" 'type', entity_7.type,",
" 'archived', entity_7.archived,",
" 'created_at', entity_7.created_at,",
" 'number', phone_number_8.number",
" )",
" FROM agreego.entity entity_7",
" JOIN agreego.phone_number phone_number_8 ON phone_number_8.id = entity_7.id",
" WHERE",
" NOT entity_7.archived",
" AND phone_number_8.number ILIKE $32 #>> '{}'",
" AND relationship_5.target_id = entity_7.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_4",
" JOIN agreego.relationship relationship_5 ON relationship_5.id = entity_4.id",
" JOIN agreego.contact contact_6 ON contact_6.id = relationship_5.id",
" WHERE",
" NOT entity_4.archived",
" AND relationship_5.target_type = 'phone_number'",
" AND relationship_5.source_id = entity_1.id",
" ),",
" 'email_addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_9.id,",
" 'type', entity_9.type,",
" 'archived', entity_9.archived,",
" 'created_at', entity_9.created_at,",
" 'is_primary', contact_11.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_12.id,",
" 'type', entity_12.type,",
" 'archived', entity_12.archived,",
" 'created_at', entity_12.created_at,",
" 'address', email_address_13.address",
" )",
" FROM agreego.entity entity_12",
" JOIN agreego.email_address email_address_13 ON email_address_13.id = entity_12.id",
" WHERE",
" NOT entity_12.archived",
" AND relationship_10.target_id = entity_12.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_9",
" JOIN agreego.relationship relationship_10 ON relationship_10.id = entity_9.id",
" JOIN agreego.contact contact_11 ON contact_11.id = relationship_10.id",
" WHERE",
" NOT entity_9.archived",
" AND relationship_10.target_type = 'email_address'",
" AND relationship_10.source_id = entity_1.id",
" ),",
" 'addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_14.id,",
" 'type', entity_14.type,",
" 'archived', entity_14.archived,",
" 'created_at', entity_14.created_at,",
" 'is_primary', contact_16.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_17.id,",
" 'type', entity_17.type,",
" 'archived', entity_17.archived,",
" 'created_at', entity_17.created_at,",
" 'city', address_18.city",
" )",
" FROM agreego.entity entity_17",
" JOIN agreego.address address_18 ON address_18.id = entity_17.id",
" WHERE",
" NOT entity_17.archived",
" AND relationship_15.target_id = entity_17.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_14",
" JOIN agreego.relationship relationship_15 ON relationship_15.id = entity_14.id",
" JOIN agreego.contact contact_16 ON contact_16.id = relationship_15.id",
" WHERE",
" NOT entity_14.archived",
" AND relationship_15.target_type = 'address'",
" AND relationship_15.source_id = entity_1.id",
" ),",
" 'contacts', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_19.id,",
" 'type', entity_19.type,",
" 'archived', entity_19.archived,",
" 'created_at', entity_19.created_at,",
" 'is_primary', contact_21.is_primary,",
" 'target', CASE",
" WHEN relationship_20.target_type = 'phone_number' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_22.id,",
" 'type', entity_22.type,",
" 'archived', entity_22.archived,",
" 'created_at', entity_22.created_at,",
" 'number', phone_number_23.number",
" )",
" FROM agreego.entity entity_22",
" JOIN agreego.phone_number phone_number_23 ON phone_number_23.id = entity_22.id",
" WHERE",
" NOT entity_22.archived",
" AND relationship_20.target_id = entity_22.id",
" ))",
" WHEN relationship_20.target_type = 'email_address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_24.id,",
" 'type', entity_24.type,",
" 'archived', entity_24.archived,",
" 'created_at', entity_24.created_at,",
" 'address', email_address_25.address",
" )",
" FROM agreego.entity entity_24",
" JOIN agreego.email_address email_address_25 ON email_address_25.id = entity_24.id",
" WHERE",
" NOT entity_24.archived",
" AND relationship_20.target_id = entity_24.id",
" ))",
" WHEN relationship_20.target_type = 'address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_26.id,",
" 'type', entity_26.type,",
" 'archived', entity_26.archived,",
" 'created_at', entity_26.created_at,",
" 'city', address_27.city",
" )",
" FROM agreego.entity entity_26",
" JOIN agreego.address address_27 ON address_27.id = entity_26.id",
" WHERE",
" NOT entity_26.archived",
" AND relationship_20.target_id = entity_26.id",
" ))",
" ELSE NULL",
" END",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_19",
" JOIN agreego.relationship relationship_20 ON relationship_20.id = entity_19.id",
" JOIN agreego.contact contact_21 ON contact_21.id = relationship_20.id",
" WHERE",
" NOT entity_19.archived",
" AND contact_21.is_primary = ($11 #>> '{}')::BOOLEAN",
" AND relationship_20.source_id = entity_1.id",
" )",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" JOIN agreego.person person_3 ON person_3.id = organization_2.id",
" WHERE",
" NOT entity_1.archived",
" AND person_3.age = ($1 #>> '{}')::NUMERIC",
" AND person_3.age > ($2 #>> '{}')::NUMERIC",
" AND person_3.age >= ($3 #>> '{}')::NUMERIC",
" AND person_3.age < ($4 #>> '{}')::NUMERIC",
" AND person_3.age <= ($5 #>> '{}')::NUMERIC",
" AND person_3.age <> ($6 #>> '{}')::NUMERIC",
" AND person_3.age NOT IN (SELECT value::NUMERIC FROM jsonb_array_elements_text(($7 #>> '{}')::jsonb))",
" AND person_3.age IN (SELECT value::NUMERIC FROM jsonb_array_elements_text(($8 #>> '{}')::jsonb))",
" AND entity_1.archived = ($9 #>> '{}')::BOOLEAN",
" AND entity_1.archived <> ($10 #>> '{}')::BOOLEAN",
" AND entity_1.created_at = ($12 #>> '{}')::TIMESTAMPTZ",
" AND entity_1.created_at > ($13 #>> '{}')::TIMESTAMPTZ",
" AND entity_1.created_at >= ($14 #>> '{}')::TIMESTAMPTZ",
" AND entity_1.created_at < ($15 #>> '{}')::TIMESTAMPTZ",
" AND entity_1.created_at <= ($16 #>> '{}')::TIMESTAMPTZ",
" AND entity_1.created_at <> ($17 #>> '{}')::TIMESTAMPTZ",
" AND person_3.first_name ILIKE $18 #>> '{}'",
" AND person_3.first_name > ($19 #>> '{)",
" AND person_3.first_name >= ($20 #>> '{)",
" AND person_3.first_name < ($21 #>> '{)",
" AND person_3.first_name <= ($22 #>> '{)",
" AND person_3.first_name NOT ILIKE $23 #>> '{}'",
" AND person_3.first_name NOT IN (SELECT value FROM jsonb_array_elements_text(($24 #>> '{}')::jsonb))",
" AND person_3.first_name IN (SELECT value FROM jsonb_array_elements_text(($25 #>> '{}')::jsonb))",
" AND entity_1.id = ($26 #>> '{}')::UUID",
" AND entity_1.id <> ($27 #>> '{}')::UUID",
" AND entity_1.id NOT IN (SELECT value::UUID FROM jsonb_array_elements_text(($28 #>> '{}')::jsonb))",
" AND entity_1.id IN (SELECT value::UUID FROM jsonb_array_elements_text(($29 #>> '{}')::jsonb))",
" AND person_3.last_name ILIKE $30 #>> '{}'",
" AND person_3.last_name NOT ILIKE $31 #>> '{}'",
" ))))"
]
]
}
},
{
"description": "Person ad-hoc email addresses select",
"action": "query",
"schema_id": "full.person/email_addresses",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'is_primary', contact_3.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_4.id,",
" 'type', entity_4.type,",
" 'archived', entity_4.archived,",
" 'created_at', entity_4.created_at,",
" 'address', email_address_5.address",
" )",
" FROM agreego.entity entity_4",
" JOIN agreego.email_address email_address_5 ON email_address_5.id = entity_4.id",
" WHERE",
" NOT entity_4.archived",
" AND relationship_2.target_id = entity_4.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_1",
" JOIN agreego.relationship relationship_2 ON relationship_2.id = entity_1.id",
" JOIN agreego.contact contact_3 ON contact_3.id = relationship_2.id",
" WHERE",
" NOT entity_1.archived",
" AND relationship_2.target_type = 'email_address'",
"))))"
]
]
}
},
{
"description": "Order select with customer and lines",
"action": "query",
"schema_id": "full.order",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', order_2.id,",
" 'type', order_2.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'total', order_2.total,",
" 'customer_id', order_2.customer_id,",
" 'customer', (",
" SELECT jsonb_build_object(",
" 'id', entity_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_4.name,",
" 'first_name', person_5.first_name,",
" 'last_name', person_5.last_name,",
" 'age', person_5.age",
" )",
" FROM agreego.entity entity_3",
" JOIN agreego.organization organization_4 ON organization_4.id = entity_3.id",
" JOIN agreego.person person_5 ON person_5.id = organization_4.id",
" WHERE",
" NOT entity_3.archived",
" AND order_2.customer_id = person_5.id",
" ),",
" 'lines', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', order_line_7.id,",
" 'type', order_line_7.type,",
" 'archived', entity_6.archived,",
" 'created_at', entity_6.created_at,",
" 'order_id', order_line_7.order_id,",
" 'product', order_line_7.product,",
" 'price', order_line_7.price",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_6",
" JOIN agreego.order_line order_line_7 ON order_line_7.id = entity_6.id",
" WHERE",
" NOT entity_6.archived",
" AND order_line_7.order_id = order_2.id",
" )",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.order order_2 ON order_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Organization select via a punc response with ref",
"action": "query",
"schema_id": "get_organization.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'name', organization_2.name",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Organizations select via a punc response with family",
"action": "query",
"schema_id": "get_organizations.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT COALESCE(jsonb_agg(CASE",
" WHEN organization_2.type = 'bot' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_4.name,",
" 'token', bot_5.token,",
" 'role', bot_5.role",
" )",
" FROM agreego.entity entity_3",
" JOIN agreego.organization organization_4 ON organization_4.id = entity_3.id",
" JOIN agreego.bot bot_5 ON bot_5.id = organization_4.id",
" WHERE",
" NOT entity_3.archived",
" AND entity_3.id = entity_1.id",
" ))",
" WHEN organization_2.type = 'organization' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_6.id,",
" 'type', entity_6.type,",
" 'archived', entity_6.archived,",
" 'created_at', entity_6.created_at,",
" 'name', organization_7.name",
" )",
" FROM agreego.entity entity_6",
" JOIN agreego.organization organization_7 ON organization_7.id = entity_6.id",
" WHERE",
" NOT entity_6.archived",
" AND entity_6.id = entity_1.id",
" ))",
" WHEN organization_2.type = 'person' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_8.id,",
" 'type', entity_8.type,",
" 'archived', entity_8.archived,",
" 'created_at', entity_8.created_at,",
" 'name', organization_9.name,",
" 'first_name', person_10.first_name,",
" 'last_name', person_10.last_name,",
" 'age', person_10.age",
" )",
" FROM agreego.entity entity_8",
" JOIN agreego.organization organization_9 ON organization_9.id = entity_8.id",
" JOIN agreego.person person_10 ON person_10.id = organization_9.id",
" WHERE",
" NOT entity_8.archived",
" AND entity_8.id = entity_1.id",
" ))",
" ELSE NULL",
" END), '[]'::jsonb)",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Light organizations select via a punc response with family",
"action": "query",
"schema_id": "get_light_organization.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT CASE",
" WHEN organization_2.type = 'bot' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_4.name,",
" 'token', bot_5.token",
" )",
" FROM agreego.entity entity_3",
" JOIN agreego.organization organization_4 ON organization_4.id = entity_3.id",
" JOIN agreego.bot bot_5 ON bot_5.id = organization_4.id",
" WHERE",
" NOT entity_3.archived",
" AND entity_3.id = entity_1.id",
" ))",
" WHEN organization_2.type = 'person' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_6.id,",
" 'type', entity_6.type,",
" 'archived', entity_6.archived,",
" 'created_at', entity_6.created_at,",
" 'name', organization_7.name,",
" 'first_name', person_8.first_name,",
" 'last_name', person_8.last_name",
" )",
" FROM agreego.entity entity_6",
" JOIN agreego.organization organization_7 ON organization_7.id = entity_6.id",
" JOIN agreego.person person_8 ON person_8.id = organization_7.id",
" WHERE",
" NOT entity_6.archived",
" AND entity_6.id = entity_1.id",
" ))",
" ELSE NULL",
" END",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Full organizations select via a punc response with family",
"action": "query",
"schema_id": "get_full_organization.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT CASE",
" WHEN organization_2.type = 'person' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_4.name,",
" 'first_name', person_5.first_name,",
" 'last_name', person_5.last_name,",
" 'age', person_5.age,",
" 'phone_numbers', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_6.id,",
" 'type', entity_6.type,",
" 'archived', entity_6.archived,",
" 'created_at', entity_6.created_at,",
" 'is_primary', contact_8.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_9.id,",
" 'type', entity_9.type,",
" 'archived', entity_9.archived,",
" 'created_at', entity_9.created_at,",
" 'number', phone_number_10.number",
" )",
" FROM agreego.entity entity_9",
" JOIN agreego.phone_number phone_number_10 ON phone_number_10.id = entity_9.id",
" WHERE",
" NOT entity_9.archived",
" AND relationship_7.target_id = entity_9.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_6",
" JOIN agreego.relationship relationship_7 ON relationship_7.id = entity_6.id",
" JOIN agreego.contact contact_8 ON contact_8.id = relationship_7.id",
" WHERE",
" NOT entity_6.archived",
" AND relationship_7.target_type = 'phone_number'",
" AND relationship_7.source_id = entity_3.id",
" ),",
" 'email_addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_11.id,",
" 'type', entity_11.type,",
" 'archived', entity_11.archived,",
" 'created_at', entity_11.created_at,",
" 'is_primary', contact_13.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_14.id,",
" 'type', entity_14.type,",
" 'archived', entity_14.archived,",
" 'created_at', entity_14.created_at,",
" 'address', email_address_15.address",
" )",
" FROM agreego.entity entity_14",
" JOIN agreego.email_address email_address_15 ON email_address_15.id = entity_14.id",
" WHERE",
" NOT entity_14.archived",
" AND relationship_12.target_id = entity_14.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_11",
" JOIN agreego.relationship relationship_12 ON relationship_12.id = entity_11.id",
" JOIN agreego.contact contact_13 ON contact_13.id = relationship_12.id",
" WHERE",
" NOT entity_11.archived",
" AND relationship_12.target_type = 'email_address'",
" AND relationship_12.source_id = entity_3.id",
" ),",
" 'addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_16.id,",
" 'type', entity_16.type,",
" 'archived', entity_16.archived,",
" 'created_at', entity_16.created_at,",
" 'is_primary', contact_18.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_19.id,",
" 'type', entity_19.type,",
" 'archived', entity_19.archived,",
" 'created_at', entity_19.created_at,",
" 'city', address_20.city",
" )",
" FROM agreego.entity entity_19",
" JOIN agreego.address address_20 ON address_20.id = entity_19.id",
" WHERE",
" NOT entity_19.archived",
" AND relationship_17.target_id = entity_19.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_16",
" JOIN agreego.relationship relationship_17 ON relationship_17.id = entity_16.id",
" JOIN agreego.contact contact_18 ON contact_18.id = relationship_17.id",
" WHERE",
" NOT entity_16.archived",
" AND relationship_17.target_type = 'address'",
" AND relationship_17.source_id = entity_3.id",
" ),",
" 'contacts', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_21.id,",
" 'type', entity_21.type,",
" 'archived', entity_21.archived,",
" 'created_at', entity_21.created_at,",
" 'is_primary', contact_23.is_primary,",
" 'target', CASE",
" WHEN relationship_22.target_type = 'phone_number' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_24.id,",
" 'type', entity_24.type,",
" 'archived', entity_24.archived,",
" 'created_at', entity_24.created_at,",
" 'number', phone_number_25.number",
" )",
" FROM agreego.entity entity_24",
" JOIN agreego.phone_number phone_number_25 ON phone_number_25.id = entity_24.id",
" WHERE",
" NOT entity_24.archived",
" AND relationship_22.target_id = entity_24.id",
" ))",
" WHEN relationship_22.target_type = 'email_address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_26.id,",
" 'type', entity_26.type,",
" 'archived', entity_26.archived,",
" 'created_at', entity_26.created_at,",
" 'address', email_address_27.address",
" )",
" FROM agreego.entity entity_26",
" JOIN agreego.email_address email_address_27 ON email_address_27.id = entity_26.id",
" WHERE",
" NOT entity_26.archived",
" AND relationship_22.target_id = entity_26.id",
" ))",
" WHEN relationship_22.target_type = 'address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_28.id,",
" 'type', entity_28.type,",
" 'archived', entity_28.archived,",
" 'created_at', entity_28.created_at,",
" 'city', address_29.city",
" )",
" FROM agreego.entity entity_28",
" JOIN agreego.address address_29 ON address_29.id = entity_28.id",
" WHERE",
" NOT entity_28.archived",
" AND relationship_22.target_id = entity_28.id",
" ))",
" ELSE NULL",
" END",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_21",
" JOIN agreego.relationship relationship_22 ON relationship_22.id = entity_21.id",
" JOIN agreego.contact contact_23 ON contact_23.id = relationship_22.id",
" WHERE",
" NOT entity_21.archived",
" AND relationship_22.source_id = entity_3.id",
" )",
" )",
" FROM agreego.entity entity_3",
" JOIN agreego.organization organization_4 ON organization_4.id = entity_3.id",
" JOIN agreego.person person_5 ON person_5.id = organization_4.id",
" WHERE",
" NOT entity_3.archived",
" AND entity_3.id = entity_1.id",
" ))",
" ELSE NULL",
" END",
" FROM agreego.entity entity_1",
" JOIN agreego.organization organization_2 ON organization_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Orders select via a punc with items",
"action": "query",
"schema_id": "get_orders.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', order_2.id,",
" 'type', order_2.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'total', order_2.total,",
" 'customer_id', order_2.customer_id,",
" 'customer', (",
" SELECT jsonb_build_object(",
" 'id', entity_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_4.name,",
" 'first_name', person_5.first_name,",
" 'last_name', person_5.last_name,",
" 'age', person_5.age",
" )",
" FROM agreego.entity entity_3",
" JOIN agreego.organization organization_4 ON organization_4.id = entity_3.id",
" JOIN agreego.person person_5 ON person_5.id = organization_4.id",
" WHERE",
" NOT entity_3.archived",
" AND order_2.customer_id = person_5.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_1",
" JOIN agreego.order order_2 ON order_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Widgets select via a punc response with family (STI)",
"action": "query",
"schema_id": "get_widgets.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT COALESCE(jsonb_agg(CASE",
" WHEN widget_2.kind = 'stock' THEN (jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'kind', widget_2.kind",
" ))",
" WHEN widget_2.kind = 'tasks' THEN (jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'kind', widget_2.kind",
" ))",
" ELSE NULL",
" END), '[]'::jsonb)",
" FROM agreego.entity entity_1",
" JOIN agreego.widget widget_2 ON widget_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Query invoice with JSONB metadata fields",
"action": "query",
"schema_id": "invoice",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', invoice_2.id,",
" 'type', invoice_2.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'total', invoice_2.total,",
" 'lines', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', invoice_line_4.id,",
" 'type', invoice_line_4.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'invoice_id', invoice_line_4.invoice_id,",
" 'price', invoice_line_4.price",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_3",
" JOIN agreego.invoice_line invoice_line_4 ON invoice_line_4.id = entity_3.id",
" WHERE",
" NOT entity_3.archived",
" AND invoice_line_4.invoice_id = invoice_2.id",
" ),",
" 'metadata_line', invoice_2.metadata_line,",
" 'metadata_lines', invoice_2.metadata_lines,",
" 'metadata_nested_line', invoice_2.metadata_nested_line,",
" 'metadata_nested_lines', invoice_2.metadata_nested_lines",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.invoice invoice_2 ON invoice_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Account select on full schema with cases fields",
"action": "query",
"schema_id": "account",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_1.id,",
" 'type', entity_1.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'kind', account_2.kind,",
" 'routing_number', account_2.routing_number,",
" 'card_number', account_2.card_number",
" )",
" FROM agreego.entity entity_1",
" JOIN agreego.account account_2 ON account_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
"))))"
]
]
}
},
{
"description": "Order select with nested polymorphic counterparty family relation",
"action": "query",
"schema_id": "get_counterparty_orders.response",
"expect": {
"success": true,
"sql": [
[
"((SELECT jsonb_strip_nulls((",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', order_2.id,",
" 'type', order_2.type,",
" 'archived', entity_1.archived,",
" 'created_at', entity_1.created_at,",
" 'total', order_2.total,",
" 'customer_id', order_2.customer_id,",
" 'counterparty', (",
" SELECT CASE",
" WHEN organization_4.type = 'bot' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_5.id,",
" 'type', entity_5.type,",
" 'archived', entity_5.archived,",
" 'created_at', entity_5.created_at,",
" 'name', organization_6.name,",
" 'token', bot_7.token,",
" 'role', bot_7.role",
" )",
" FROM agreego.entity entity_5",
" JOIN agreego.organization organization_6 ON organization_6.id = entity_5.id",
" JOIN agreego.bot bot_7 ON bot_7.id = organization_6.id",
" WHERE",
" NOT entity_5.archived",
" AND entity_5.id = entity_3.id",
" ))",
" WHEN organization_4.type = 'organization' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_8.id,",
" 'type', entity_8.type,",
" 'archived', entity_8.archived,",
" 'created_at', entity_8.created_at,",
" 'name', organization_9.name",
" )",
" FROM agreego.entity entity_8",
" JOIN agreego.organization organization_9 ON organization_9.id = entity_8.id",
" WHERE",
" NOT entity_8.archived",
" AND entity_8.id = entity_3.id",
" ))",
" WHEN organization_4.type = 'person' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_10.id,",
" 'type', entity_10.type,",
" 'archived', entity_10.archived,",
" 'created_at', entity_10.created_at,",
" 'name', organization_11.name,",
" 'first_name', person_12.first_name,",
" 'last_name', person_12.last_name,",
" 'age', person_12.age",
" )",
" FROM agreego.entity entity_10",
" JOIN agreego.organization organization_11 ON organization_11.id = entity_10.id",
" JOIN agreego.person person_12 ON person_12.id = organization_11.id",
" WHERE",
" NOT entity_10.archived",
" AND entity_10.id = entity_3.id",
" ))",
" ELSE NULL",
" END",
" FROM agreego.entity entity_3",
" JOIN agreego.organization organization_4 ON organization_4.id = entity_3.id",
" WHERE",
" NOT entity_3.archived",
" AND order_2.counterparty_id = entity_3.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.entity entity_1",
" JOIN agreego.order order_2 ON order_2.id = entity_1.id",
" WHERE",
" NOT entity_1.archived",
" AND order_2.counterparty_type IN ('bot', 'organization', 'person')",
"))))"
]
]
}
}
]
}
]