+sub _make_sort_spec {
+ my ($class) = @_;
+
+ %sort_spec = $class->_sort_spec if defined &{ "${class}::_sort_spec" };
+
+ my $meta = $class->object_class->meta;
+
+ if (!$sort_spec{default}) {
+ my @primary_keys = $meta->primary_key;
+ $sort_spec{default} = [ "" . $primary_keys[0], 0 ];
+ }
+
+ $sort_spec{columns} ||= { SIMPLE => [ map { "$_" } $meta->columns ] };
+
+ if ($sort_spec{columns}->{SIMPLE}) {
+ my $table = $meta->table;
+
+ if (!ref($sort_spec{columns}->{SIMPLE}) && ($sort_spec{columns}->{SIMPLE} eq 'ALL')) {
+ map { $sort_spec{columns}->{"$_"} ||= "${table}.${_}"} @{ $meta->columns };
+ delete $sort_spec{columns}->{SIMPLE};
+ } else {
+ map { $sort_spec{columns}->{$_} = "${table}.${_}" } @{ delete($sort_spec{columns}->{SIMPLE}) };
+ }
+ }
+}
+