class Pagy::Keyset

def after_latest_query

Prepare the literal query to filter out the already fetched records
def after_latest_query
  operator   = { asc: '>', desc: '<' }
  directions = @keyset.values
  if @vars[:tuple_comparison] && (directions.all?(:asc) || directions.all?(:desc))
    columns      = @keyset.keys
    placeholders = columns.map { |column| ":#{column}" }.join(', ')
    "( #{columns.join(', ')} ) #{operator[directions.first]} ( #{placeholders} )"
  else
    keyset = @keyset.to_a
    where  = []
    until keyset.empty?
      last_column, last_direction = keyset.pop
      query = +'( '
      query << (keyset.map { |column, _d| "#{column} = :#{column}" } \
                << "#{last_column} #{operator[last_direction]} :#{last_column}").join(' AND ')
      query << ' )'
      where << query
    end
    where.join(' OR ')
  end
end