acq search: improvements to server-side sorting
authorGalen Charlton <gmc@equinoxinitiative.org>
Mon, 24 Feb 2020 17:55:45 +0000 (12:55 -0500)
committerGalen Charlton <gmc@equinoxinitiative.org>
Mon, 24 Feb 2020 17:55:45 +0000 (12:55 -0500)
- create joins for aou, acqim, and acqipm as needed
- look up identity column for a class rather than assuming
  that it's always 'id'

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Search.pm

index fde084c..2f5b94b 100644 (file)
@@ -227,6 +227,14 @@ sub get_fm_selector_by_hint {
     undef;
 }
 
+sub get_fm_id_field_by_hint {
+    my ($hint) = @_;
+    foreach my $field (values %{$Fieldmapper::fieldmap}) {
+        return $field->{identity} if $field->{hint} eq $hint;
+    }
+    return 'id';
+}
+
 sub gen_au_term {
     my ($value, $n) = @_;
     my $lc_value = {
@@ -513,7 +521,7 @@ sub add_generic_id_joins {
         my $clause = {
             "class" => $specific,
             "type" => "left",
-            "field" => "id",
+            "field" => get_fm_id_field_by_hint($specific),
             "fkey" => $attr,
         };
 
@@ -536,6 +544,9 @@ sub add_acqpl_joins { return add_generic_id_joins( acqpl => @_ ) }
 sub add_acqpro_joins { return add_generic_id_joins( acqpro => @_ ) }
 sub add_acqpostlbl_joins { return add_generic_id_joins( acqpostlbl => @_ ) }
 sub add_jubstlbl_joins { return add_generic_id_joins( jubstlbl => @_ ) }
+sub add_aou_joins { return add_generic_id_joins( aou => @_ ) }
+sub add_acqim_joins { return add_generic_id_joins( acqim => @_ ) }
+sub add_acqipm_joins { return add_generic_id_joins( acqipm => @_ ) }
 
 
 sub build_from_clause_and_joins {