Skip to content

Commit

Permalink
Merge pull request #580 from folio-org/MODFQMMGR-637-ebsco-kjain
Browse files Browse the repository at this point in the history
MODFQMMGR-637:Use indexes for specific JSONB arrays
  • Loading branch information
kjain110 authored Jan 14, 2025
2 parents af8b44b + 190cc39 commit f03b2c1
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -794,7 +794,6 @@
valueJsonPath: '$.instanceFormats.*.id',
labelJsonPath: '$.instanceFormats.*.name',
},
sourceAlias: 'inst',
essential: true,
dataType: {
dataType: 'jsonbArrayType',
Expand All @@ -805,8 +804,8 @@
idColumnName: 'instance_format_ids',
queryable: true,
visibleByDefault: false,
valueGetter: "( SELECT array_agg(format.jsonb ->> 'name'::text) FROM jsonb_array_elements_text(:inst.jsonb -> 'instanceFormatIds'::text) record(value) JOIN src_inventory_instance_format format ON record.value::text = format.id::text)",
filterValueGetter: "( SELECT array_agg(lower(format.jsonb ->> 'name'::text)) FROM jsonb_array_elements_text(:inst.jsonb -> 'instanceFormatIds'::text) record(value) JOIN src_inventory_instance_format format ON record.value::text = format.id::text)",
valueGetter: "( SELECT jsonb_agg(format.jsonb ->> 'name') FROM jsonb_array_elements_text(:inst.jsonb -> 'instanceFormatIds') record(value) JOIN src_inventory_instance_format format ON record.value::text = format.id::text )",
filterValueGetter: "( SELECT jsonb_agg(lower(format.jsonb ->> 'name')) FROM jsonb_array_elements_text(:inst.jsonb -> 'instanceFormatIds') record(value) JOIN src_inventory_instance_format format ON record.value::text = format.id::text )",
source: {
entityTypeId: '8fc4a9d2-7ccf-4233-afb8-796911839862',
columnName: 'format_names',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,9 +356,9 @@
idColumnName: 'acq_unit_ids',
queryable: true,
visibleByDefault: false,
valueGetter: "( SELECT array_agg(acq_unit.jsonb ->> 'name'::text) FILTER (WHERE (acq_unit.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds'::text) record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text)",
filterValueGetter: "( SELECT array_agg(lower(acq_unit.jsonb ->> 'name'::text)) FILTER (WHERE (acq_unit.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds'::text) record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text)",
valueFunction: 'lower(:value)',
valueGetter: "( SELECT jsonb_agg(acq_unit.jsonb ->> 'name') FILTER (WHERE (acq_unit.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds') record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text )",
filterValueGetter: "( SELECT jsonb_agg(lower(acq_unit.jsonb ->> 'name')) FILTER (WHERE (acq_unit.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds') record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text )",
valueFunction: "lower(:value)",
source: {
entityTypeId: '48de4796-11a2-44e9-abb7-01e84af87234',
columnName: 'acquisition_unit'
Expand All @@ -369,7 +369,6 @@
labelJsonPath: '$.acquisitionsUnits.*.name'
}
},

{
name: 'next_pol_number',
sourceAlias: 'po',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,29 +206,29 @@
dataType: {
dataType: 'jsonbArrayType',
itemDataType: {
dataType: 'rangedUUIDType',
},
dataType: 'stringType'
}
},
isIdColumn: false,
queryable: false,
visibleByDefault: false,
valueGetter: "(:sourceAlias.jsonb -> 'organizationTypes'::text)",
filterValueGetter: "(:sourceAlias.jsonb -> 'organizationTypes'::text)"
valueGetter: "(:sourceAlias.jsonb -> 'organizationTypes')",
filterValueGetter: "(:sourceAlias.jsonb -> 'organizationTypes')"
},
{
name: 'type_names',
sourceAlias: 'org',
dataType: {
dataType: 'jsonbArrayType',
itemDataType: {
dataType: 'stringType',
},
dataType: 'stringType'
}
},
idColumnName: 'type_ids',
queryable: true,
visibleByDefault: false,
valueGetter: "( SELECT array_agg(a.jsonb ->> 'name'::text) FILTER (WHERE (a.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'organizationTypes'::text) record(value) JOIN src_organization_types a ON record.value::text = a.id::text)",
filterValueGetter: "( SELECT array_agg(lower(a.jsonb ->> 'name'::text)) FILTER (WHERE (a.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'organizationTypes'::text) record(value) JOIN src_organization_types a ON record.value::text = a.id::text)",
valueGetter: "( SELECT jsonb_agg(a.jsonb ->> 'name') FILTER (WHERE (a.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'organizationTypes') record(value) JOIN src_organization_types a ON record.value::text = a.id::text )",
filterValueGetter: "( SELECT jsonb_agg(lower(a.jsonb ->> 'name')) FILTER (WHERE (a.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'organizationTypes') record(value) JOIN src_organization_types a ON record.value::text = a.id::text )",
source: {
entityTypeId: '85a2b008-af8d-4890-9490-421cabcb7bad',
columnName: 'name'
Expand Down Expand Up @@ -1571,20 +1571,19 @@
idColumnName: 'acq_unit_ids',
queryable: true,
visibleByDefault: false,
valueGetter: "( SELECT array_agg(acq_unit.jsonb ->> 'name'::text) FILTER (WHERE (acq_unit.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds'::text) record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text)",
filterValueGetter: "( SELECT array_agg(lower(acq_unit.jsonb ->> 'name'::text)) FILTER (WHERE (acq_unit.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds'::text) record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text)",
valueGetter: "( SELECT jsonb_agg(acq_unit.jsonb ->> 'name') FILTER (WHERE (acq_unit.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds') record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text )",
filterValueGetter: "( SELECT jsonb_agg(lower(acq_unit.jsonb ->> 'name')) FILTER (WHERE (acq_unit.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'acqUnitIds') record(value) JOIN src_acquisitions_unit acq_unit ON record.value::text = acq_unit.id::text )",
valueFunction: 'lower(:value)',
source: {
entityTypeId: 'b5ffa2e9-8080-471a-8003-a8c5a1274503',
columnName: 'acq_unit_names'
columnName: 'acq_unit_names',
},
valueSourceApi: {
path: 'acquisitions-units/units',
valueJsonPath: '$.acquisitionsUnits.*.id',
labelJsonPath: '$.acquisitionsUnits.*.name'
}
labelJsonPath: '$.acquisitionsUnits.*.name',
},
},

{
name: 'edi_vendor_edi_code',
sourceAlias: 'org',
Expand Down
12 changes: 6 additions & 6 deletions src/main/resources/entity-types/users/simple_user_details.json5
Original file line number Diff line number Diff line change
Expand Up @@ -520,14 +520,14 @@
isIdColumn: false,
queryable: true,
visibleByDefault: false,
valueGetter: "(:sourceAlias.jsonb -> 'departments'::text)",
filterValueGetter: "(:sourceAlias.jsonb -> 'departments'::text)"
valueGetter: "(:sourceAlias.jsonb -> 'departments')",
filterValueGetter: "(:sourceAlias.jsonb -> 'departments')"
},
{
name: 'departments',
source: {
columnName: 'departments',
entityTypeId: 'bb058933-cd06-4539-bd3a-6f248ff98ee2'
entityTypeId: 'bb058933-cd06-4539-bd3a-6f248ff98ee2',
},
dataType: {
dataType: 'jsonbArrayType',
Expand All @@ -541,12 +541,12 @@
valueSourceApi: {
path: 'departments',
labelJsonPath: '$.departments.*.name',
valueJsonPath: '$.departments.*.id'
valueJsonPath: '$.departments.*.id',
},
visibleByDefault: false,
valueFunction: 'lower(:value)',
valueGetter: "( SELECT array_agg(a.jsonb ->> 'name'::text) FILTER (WHERE (a.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'departments'::text) record(value) JOIN src_users_departments a ON record.value::text = a.id::text)",
filterValueGetter: "( SELECT array_agg(lower(a.jsonb ->> 'name'::text)) FILTER (WHERE (a.jsonb ->> 'name'::text) IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'departments'::text) record(value) JOIN src_users_departments a ON record.value::text = a.id::text)"
valueGetter: "( SELECT jsonb_agg(a.jsonb ->> 'name') FILTER (WHERE (a.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'departments') record(value) JOIN src_users_departments a ON record.value::text = a.id::text )",
filterValueGetter: "( SELECT jsonb_agg(lower(a.jsonb ->> 'name')) FILTER (WHERE (a.jsonb ->> 'name') IS NOT NULL) FROM jsonb_array_elements_text(:sourceAlias.jsonb -> 'departments') record(value) JOIN src_users_departments a ON record.value::text = a.id::text )",
},
{
name: 'enrollment_date',
Expand Down

0 comments on commit f03b2c1

Please sign in to comment.