Files
jspg/fixtures/queryer.json

2338 lines
82 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"
}
}
}
}
],
"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": [
"organization",
"entity"
],
"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": [
"bot",
"organization",
"entity"
],
"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": [
"person",
"organization",
"entity"
],
"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": [
"relationship",
"entity"
],
"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": [
"contact",
"relationship",
"entity"
],
"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": [
"phone_number",
"entity"
],
"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": [
"email_address",
"entity"
],
"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": [
"address",
"entity"
],
"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"
}
}
},
"light.order": {
"type": "order",
"properties": {
"customer": {
"type": "person"
}
}
},
"full.order": {
"type": "order",
"properties": {
"customer": {
"type": "person"
},
"lines": {
"type": "array",
"items": {
"type": "order_line"
}
}
}
}
},
"hierarchy": [
"order",
"entity"
],
"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": [
"order_line",
"entity"
],
"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": [
"widget",
"entity"
],
"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": [
"account",
"entity"
],
"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": [
"invoice",
"entity"
],
"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": [
"invoice_line",
"entity"
],
"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_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_2.name,",
" 'first_name', person_1.first_name,",
" 'last_name', person_1.last_name,",
" 'age', person_1.age",
" )",
" 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_strip_nulls((",
" SELECT jsonb_build_object(",
" 'id', entity_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_2.name,",
" 'first_name', person_1.first_name,",
" 'last_name', person_1.last_name,",
" 'age', person_1.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_4.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_8.id,",
" 'type', entity_8.type,",
" 'archived', entity_8.archived,",
" 'created_at', entity_8.created_at,",
" 'number', phone_number_7.number",
" )",
" FROM agreego.phone_number phone_number_7",
" JOIN agreego.entity entity_8 ON entity_8.id = phone_number_7.id",
" WHERE",
" NOT entity_8.archived",
" AND relationship_5.target_id = entity_8.id",
" )",
" )), '[]'::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 relationship_5.target_type = 'phone_number'",
" AND relationship_5.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_9.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_13.id,",
" 'type', entity_13.type,",
" 'archived', entity_13.archived,",
" 'created_at', entity_13.created_at,",
" 'address', email_address_12.address",
" )",
" FROM agreego.email_address email_address_12",
" JOIN agreego.entity entity_13 ON entity_13.id = email_address_12.id",
" WHERE",
" NOT entity_13.archived",
" AND relationship_10.target_id = entity_13.id",
" )",
" )), '[]'::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 relationship_10.target_type = 'email_address'",
" AND relationship_10.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_14.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_18.id,",
" 'type', entity_18.type,",
" 'archived', entity_18.archived,",
" 'created_at', entity_18.created_at,",
" 'city', address_17.city",
" )",
" FROM agreego.address address_17",
" JOIN agreego.entity entity_18 ON entity_18.id = address_17.id",
" WHERE",
" NOT entity_18.archived",
" AND relationship_15.target_id = entity_18.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_14",
" JOIN agreego.relationship relationship_15 ON relationship_15.id = contact_14.id",
" JOIN agreego.entity entity_16 ON entity_16.id = relationship_15.id",
" WHERE",
" NOT entity_16.archived",
" AND relationship_15.target_type = 'address'",
" AND relationship_15.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_19.is_primary,",
" 'target', CASE",
" WHEN relationship_20.target_type = 'phone_number' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_23.id,",
" 'type', entity_23.type,",
" 'archived', entity_23.archived,",
" 'created_at', entity_23.created_at,",
" 'number', phone_number_22.number",
" )",
" FROM agreego.phone_number phone_number_22",
" JOIN agreego.entity entity_23 ON entity_23.id = phone_number_22.id",
" WHERE",
" NOT entity_23.archived",
" AND relationship_20.target_id = entity_23.id",
" ))",
" WHEN relationship_20.target_type = 'email_address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_25.id,",
" 'type', entity_25.type,",
" 'archived', entity_25.archived,",
" 'created_at', entity_25.created_at,",
" 'address', email_address_24.address",
" )",
" FROM agreego.email_address email_address_24",
" JOIN agreego.entity entity_25 ON entity_25.id = email_address_24.id",
" WHERE",
" NOT entity_25.archived",
" AND relationship_20.target_id = entity_25.id",
" ))",
" WHEN relationship_20.target_type = 'address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_27.id,",
" 'type', entity_27.type,",
" 'archived', entity_27.archived,",
" 'created_at', entity_27.created_at,",
" 'city', address_26.city",
" )",
" FROM agreego.address address_26",
" JOIN agreego.entity entity_27 ON entity_27.id = address_26.id",
" WHERE",
" NOT entity_27.archived",
" AND relationship_20.target_id = entity_27.id",
" ))",
" ELSE NULL",
" END",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_19",
" JOIN agreego.relationship relationship_20 ON relationship_20.id = contact_19.id",
" JOIN agreego.entity entity_21 ON entity_21.id = relationship_20.id",
" WHERE",
" NOT entity_21.archived",
" AND relationship_20.source_id = entity_3.id",
" )",
" )",
" 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",
"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_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'name', organization_2.name,",
" 'first_name', person_1.first_name,",
" 'last_name', person_1.last_name,",
" 'age', person_1.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_4.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_8.id,",
" 'type', entity_8.type,",
" 'archived', entity_8.archived,",
" 'created_at', entity_8.created_at,",
" 'number', phone_number_7.number",
" )",
" FROM agreego.phone_number phone_number_7",
" JOIN agreego.entity entity_8 ON entity_8.id = phone_number_7.id",
" WHERE",
" NOT entity_8.archived",
" AND phone_number_7.number ILIKE $32 #>> '{}'",
" AND relationship_5.target_id = entity_8.id",
" )",
" )), '[]'::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 relationship_5.target_type = 'phone_number'",
" AND relationship_5.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_9.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_13.id,",
" 'type', entity_13.type,",
" 'archived', entity_13.archived,",
" 'created_at', entity_13.created_at,",
" 'address', email_address_12.address",
" )",
" FROM agreego.email_address email_address_12",
" JOIN agreego.entity entity_13 ON entity_13.id = email_address_12.id",
" WHERE",
" NOT entity_13.archived",
" AND relationship_10.target_id = entity_13.id",
" )",
" )), '[]'::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 relationship_10.target_type = 'email_address'",
" AND relationship_10.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_14.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_18.id,",
" 'type', entity_18.type,",
" 'archived', entity_18.archived,",
" 'created_at', entity_18.created_at,",
" 'city', address_17.city",
" )",
" FROM agreego.address address_17",
" JOIN agreego.entity entity_18 ON entity_18.id = address_17.id",
" WHERE",
" NOT entity_18.archived",
" AND relationship_15.target_id = entity_18.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_14",
" JOIN agreego.relationship relationship_15 ON relationship_15.id = contact_14.id",
" JOIN agreego.entity entity_16 ON entity_16.id = relationship_15.id",
" WHERE",
" NOT entity_16.archived",
" AND relationship_15.target_type = 'address'",
" AND relationship_15.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_19.is_primary,",
" 'target', CASE",
" WHEN relationship_20.target_type = 'phone_number' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_23.id,",
" 'type', entity_23.type,",
" 'archived', entity_23.archived,",
" 'created_at', entity_23.created_at,",
" 'number', phone_number_22.number",
" )",
" FROM agreego.phone_number phone_number_22",
" JOIN agreego.entity entity_23 ON entity_23.id = phone_number_22.id",
" WHERE",
" NOT entity_23.archived",
" AND relationship_20.target_id = entity_23.id",
" ))",
" WHEN relationship_20.target_type = 'email_address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_25.id,",
" 'type', entity_25.type,",
" 'archived', entity_25.archived,",
" 'created_at', entity_25.created_at,",
" 'address', email_address_24.address",
" )",
" FROM agreego.email_address email_address_24",
" JOIN agreego.entity entity_25 ON entity_25.id = email_address_24.id",
" WHERE",
" NOT entity_25.archived",
" AND relationship_20.target_id = entity_25.id",
" ))",
" WHEN relationship_20.target_type = 'address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_27.id,",
" 'type', entity_27.type,",
" 'archived', entity_27.archived,",
" 'created_at', entity_27.created_at,",
" 'city', address_26.city",
" )",
" FROM agreego.address address_26",
" JOIN agreego.entity entity_27 ON entity_27.id = address_26.id",
" WHERE",
" NOT entity_27.archived",
" AND relationship_20.target_id = entity_27.id",
" ))",
" ELSE NULL",
" END",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_19",
" JOIN agreego.relationship relationship_20 ON relationship_20.id = contact_19.id",
" JOIN agreego.entity entity_21 ON entity_21.id = relationship_20.id",
" WHERE",
" NOT entity_21.archived",
" AND contact_19.is_primary = ($11 #>> '{}')::BOOLEAN",
" AND relationship_20.source_id = entity_3.id",
" )",
" )",
" 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 < ($4 #>> '{}')::NUMERIC",
" AND person_1.age <= ($5 #>> '{}')::NUMERIC",
" AND person_1.age <> ($6 #>> '{}')::NUMERIC",
" AND person_1.age NOT IN (SELECT value::NUMERIC FROM jsonb_array_elements_text(($7 #>> '{}')::jsonb))",
" AND person_1.age 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 < ($21 #>> '{)",
" AND person_1.first_name <= ($22 #>> '{)",
" AND person_1.first_name NOT ILIKE $23 #>> '{}'",
" AND person_1.first_name NOT IN (SELECT value FROM jsonb_array_elements_text(($24 #>> '{}')::jsonb))",
" AND person_1.first_name IN (SELECT value FROM jsonb_array_elements_text(($25 #>> '{}')::jsonb))",
" AND entity_3.id = ($26 #>> '{}')::UUID",
" AND entity_3.id <> ($27 #>> '{}')::UUID",
" AND entity_3.id NOT IN (SELECT value::UUID FROM jsonb_array_elements_text(($28 #>> '{}')::jsonb))",
" AND entity_3.id 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": "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_3.id,",
" 'type', entity_3.type,",
" 'archived', entity_3.archived,",
" 'created_at', entity_3.created_at,",
" 'is_primary', contact_1.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_5.id,",
" 'type', entity_5.type,",
" 'archived', entity_5.archived,",
" 'created_at', entity_5.created_at,",
" 'address', email_address_4.address",
" )",
" FROM agreego.email_address email_address_4",
" JOIN agreego.entity entity_5 ON entity_5.id = email_address_4.id",
" WHERE",
" NOT entity_5.archived",
" AND relationship_2.target_id = entity_5.id",
" )",
" )), '[]'::jsonb)",
" 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",
" 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_1.id,",
" 'type', order_1.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'total', order_1.total,",
" 'customer_id', order_1.customer_id,",
" 'customer', (",
" SELECT jsonb_build_object(",
" 'id', entity_5.id,",
" 'type', entity_5.type,",
" 'archived', entity_5.archived,",
" 'created_at', entity_5.created_at,",
" 'name', organization_4.name,",
" 'first_name', person_3.first_name,",
" 'last_name', person_3.last_name,",
" 'age', person_3.age",
" )",
" 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",
" ),",
" 'lines', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', order_line_6.id,",
" 'type', order_line_6.type,",
" 'archived', entity_7.archived,",
" 'created_at', entity_7.created_at,",
" 'order_id', order_line_6.order_id,",
" 'product', order_line_6.product,",
" 'price', order_line_6.price",
" )), '[]'::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",
" )",
" )",
" FROM agreego.order order_1",
" JOIN agreego.entity entity_2 ON entity_2.id = order_1.id",
" WHERE",
" NOT entity_2.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_2.id,",
" 'type', entity_2.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'name', organization_1.name",
" )",
" FROM agreego.organization organization_1",
" JOIN agreego.entity entity_2 ON entity_2.id = organization_1.id",
" WHERE",
" NOT entity_2.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_1.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_4.name,",
" 'token', bot_3.token,",
" 'role', bot_3.role",
" )",
" 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",
" AND entity_5.id = entity_2.id",
" ))",
" WHEN organization_1.type = 'organization' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_7.id,",
" 'type', entity_7.type,",
" 'archived', entity_7.archived,",
" 'created_at', entity_7.created_at,",
" 'name', organization_6.name",
" )",
" FROM agreego.organization organization_6",
" JOIN agreego.entity entity_7 ON entity_7.id = organization_6.id",
" WHERE",
" NOT entity_7.archived",
" AND entity_7.id = entity_2.id",
" ))",
" WHEN organization_1.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_9.name,",
" 'first_name', person_8.first_name,",
" 'last_name', person_8.last_name,",
" 'age', person_8.age",
" )",
" 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",
" AND entity_10.id = entity_2.id",
" ))",
" ELSE NULL",
" END), '[]'::jsonb)",
" FROM agreego.organization organization_1",
" JOIN agreego.entity entity_2 ON entity_2.id = organization_1.id",
" WHERE",
" NOT entity_2.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_1.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_4.name,",
" 'token', bot_3.token",
" )",
" 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",
" AND entity_5.id = entity_2.id",
" ))",
" WHEN organization_1.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_7.name,",
" 'first_name', person_6.first_name,",
" 'last_name', person_6.last_name",
" )",
" FROM agreego.person person_6",
" JOIN agreego.organization organization_7 ON organization_7.id = person_6.id",
" JOIN agreego.entity entity_8 ON entity_8.id = organization_7.id",
" WHERE",
" NOT entity_8.archived",
" AND entity_8.id = entity_2.id",
" ))",
" 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",
"))))"
]
]
}
},
{
"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_1.type = 'person' 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_4.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_8.id,",
" 'type', entity_8.type,",
" 'archived', entity_8.archived,",
" 'created_at', entity_8.created_at,",
" 'is_primary', contact_6.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_10.id,",
" 'type', entity_10.type,",
" 'archived', entity_10.archived,",
" 'created_at', entity_10.created_at,",
" 'number', phone_number_9.number",
" )",
" FROM agreego.phone_number phone_number_9",
" JOIN agreego.entity entity_10 ON entity_10.id = phone_number_9.id",
" WHERE",
" NOT entity_10.archived",
" AND relationship_7.target_id = entity_10.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_6",
" JOIN agreego.relationship relationship_7 ON relationship_7.id = contact_6.id",
" JOIN agreego.entity entity_8 ON entity_8.id = relationship_7.id",
" WHERE",
" NOT entity_8.archived",
" AND relationship_7.target_type = 'phone_number'",
" AND relationship_7.source_id = entity_5.id",
" ),",
" 'email_addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_13.id,",
" 'type', entity_13.type,",
" 'archived', entity_13.archived,",
" 'created_at', entity_13.created_at,",
" 'is_primary', contact_11.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_15.id,",
" 'type', entity_15.type,",
" 'archived', entity_15.archived,",
" 'created_at', entity_15.created_at,",
" 'address', email_address_14.address",
" )",
" 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_12.target_id = entity_15.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_11",
" JOIN agreego.relationship relationship_12 ON relationship_12.id = contact_11.id",
" JOIN agreego.entity entity_13 ON entity_13.id = relationship_12.id",
" WHERE",
" NOT entity_13.archived",
" AND relationship_12.target_type = 'email_address'",
" AND relationship_12.source_id = entity_5.id",
" ),",
" 'addresses', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_18.id,",
" 'type', entity_18.type,",
" 'archived', entity_18.archived,",
" 'created_at', entity_18.created_at,",
" 'is_primary', contact_16.is_primary,",
" 'target', (",
" SELECT jsonb_build_object(",
" 'id', entity_20.id,",
" 'type', entity_20.type,",
" 'archived', entity_20.archived,",
" 'created_at', entity_20.created_at,",
" 'city', address_19.city",
" )",
" FROM agreego.address address_19",
" JOIN agreego.entity entity_20 ON entity_20.id = address_19.id",
" WHERE",
" NOT entity_20.archived",
" AND relationship_17.target_id = entity_20.id",
" )",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_16",
" JOIN agreego.relationship relationship_17 ON relationship_17.id = contact_16.id",
" JOIN agreego.entity entity_18 ON entity_18.id = relationship_17.id",
" WHERE",
" NOT entity_18.archived",
" AND relationship_17.target_type = 'address'",
" AND relationship_17.source_id = entity_5.id",
" ),",
" 'contacts', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', entity_23.id,",
" 'type', entity_23.type,",
" 'archived', entity_23.archived,",
" 'created_at', entity_23.created_at,",
" 'is_primary', contact_21.is_primary,",
" 'target', CASE",
" WHEN relationship_22.target_type = 'phone_number' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_25.id,",
" 'type', entity_25.type,",
" 'archived', entity_25.archived,",
" 'created_at', entity_25.created_at,",
" 'number', phone_number_24.number",
" )",
" FROM agreego.phone_number phone_number_24",
" JOIN agreego.entity entity_25 ON entity_25.id = phone_number_24.id",
" WHERE",
" NOT entity_25.archived",
" AND relationship_22.target_id = entity_25.id",
" ))",
" WHEN relationship_22.target_type = 'email_address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_27.id,",
" 'type', entity_27.type,",
" 'archived', entity_27.archived,",
" 'created_at', entity_27.created_at,",
" 'address', email_address_26.address",
" )",
" FROM agreego.email_address email_address_26",
" JOIN agreego.entity entity_27 ON entity_27.id = email_address_26.id",
" WHERE",
" NOT entity_27.archived",
" AND relationship_22.target_id = entity_27.id",
" ))",
" WHEN relationship_22.target_type = 'address' THEN ((",
" SELECT jsonb_build_object(",
" 'id', entity_29.id,",
" 'type', entity_29.type,",
" 'archived', entity_29.archived,",
" 'created_at', entity_29.created_at,",
" 'city', address_28.city",
" )",
" FROM agreego.address address_28",
" JOIN agreego.entity entity_29 ON entity_29.id = address_28.id",
" WHERE",
" NOT entity_29.archived",
" AND relationship_22.target_id = entity_29.id",
" ))",
" ELSE NULL",
" END",
" )), '[]'::jsonb)",
" FROM agreego.contact contact_21",
" JOIN agreego.relationship relationship_22 ON relationship_22.id = contact_21.id",
" JOIN agreego.entity entity_23 ON entity_23.id = relationship_22.id",
" WHERE",
" NOT entity_23.archived",
" AND relationship_22.source_id = entity_5.id",
" )",
" )",
" 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 entity_5.id = entity_2.id",
" ))",
" 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",
"))))"
]
]
}
},
{
"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_1.id,",
" 'type', order_1.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'total', order_1.total,",
" 'customer_id', order_1.customer_id,",
" 'customer', (",
" SELECT jsonb_build_object(",
" 'id', entity_5.id,",
" 'type', entity_5.type,",
" 'archived', entity_5.archived,",
" 'created_at', entity_5.created_at,",
" 'name', organization_4.name,",
" 'first_name', person_3.first_name,",
" 'last_name', person_3.last_name,",
" 'age', person_3.age",
" )",
" 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",
" )",
" )), '[]'::jsonb)",
" FROM agreego.order order_1",
" JOIN agreego.entity entity_2 ON entity_2.id = order_1.id",
" WHERE",
" NOT entity_2.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_1.kind = 'stock' THEN (jsonb_build_object(",
" 'id', entity_2.id,",
" 'type', entity_2.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'kind', widget_1.kind",
" ))",
" WHEN widget_1.kind = 'tasks' THEN (jsonb_build_object(",
" 'id', entity_2.id,",
" 'type', entity_2.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'kind', widget_1.kind",
" ))",
" ELSE NULL",
" END), '[]'::jsonb)",
" FROM agreego.widget widget_1",
" JOIN agreego.entity entity_2 ON entity_2.id = widget_1.id",
" WHERE",
" NOT entity_2.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_1.id,",
" 'type', invoice_1.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'total', invoice_1.total,",
" 'lines', (",
" SELECT COALESCE(jsonb_agg(jsonb_build_object(",
" 'id', invoice_line_3.id,",
" 'type', invoice_line_3.type,",
" 'archived', entity_4.archived,",
" 'created_at', entity_4.created_at,",
" 'invoice_id', invoice_line_3.invoice_id,",
" 'price', invoice_line_3.price",
" )), '[]'::jsonb)",
" FROM agreego.invoice_line invoice_line_3",
" JOIN agreego.entity entity_4 ON entity_4.id = invoice_line_3.id",
" WHERE",
" NOT entity_4.archived",
" AND invoice_line_3.invoice_id = invoice_1.id",
" ),",
" 'metadata_line', invoice_1.metadata_line,",
" 'metadata_lines', invoice_1.metadata_lines,",
" 'metadata_nested_line', invoice_1.metadata_nested_line,",
" 'metadata_nested_lines', invoice_1.metadata_nested_lines",
" )",
" FROM agreego.invoice invoice_1",
" JOIN agreego.entity entity_2 ON entity_2.id = invoice_1.id",
" WHERE",
" NOT entity_2.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_2.id,",
" 'type', entity_2.type,",
" 'archived', entity_2.archived,",
" 'created_at', entity_2.created_at,",
" 'kind', account_1.kind,",
" 'routing_number', account_1.routing_number,",
" 'card_number', account_1.card_number",
" )",
" FROM agreego.account account_1",
" JOIN agreego.entity entity_2 ON entity_2.id = account_1.id",
" WHERE",
" NOT entity_2.archived",
"))))"
]
]
}
}
]
}
]