Use subqueries to find nested members more efficiently
This commit is contained in:
parent
974e404a6e
commit
ba481319f4
4 changed files with 23 additions and 24 deletions
|
@ -6,13 +6,12 @@ module Api
|
||||||
before_action :set_request_formats
|
before_action :set_request_formats
|
||||||
|
|
||||||
def index
|
def index
|
||||||
relation_ids = RelationMember.where(:member_type => "Node", :member_id => params[:node_id]).collect(&:relation_id).uniq
|
@relations = Relation
|
||||||
|
.visible
|
||||||
@relations = []
|
.where(:id => RelationMember.where(
|
||||||
|
:member_type => "Node",
|
||||||
Relation.find(relation_ids).each do |relation|
|
:member_id => params[:node_id]
|
||||||
@relations << relation if relation.visible
|
).select(:relation_id))
|
||||||
end
|
|
||||||
|
|
||||||
# Render the result
|
# Render the result
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -10,9 +10,11 @@ module Api
|
||||||
# :node_id parameter. note that this used to return deleted ways as well, but
|
# :node_id parameter. note that this used to return deleted ways as well, but
|
||||||
# this seemed not to be the expected behaviour, so it was removed.
|
# this seemed not to be the expected behaviour, so it was removed.
|
||||||
def index
|
def index
|
||||||
way_ids = WayNode.where(:node_id => params[:node_id]).collect { |ws| ws.id[0] }.uniq
|
@ways = Way
|
||||||
|
.visible
|
||||||
@ways = Way.where(:id => way_ids, :visible => true)
|
.where(:id => WayNode.where(
|
||||||
|
:node_id => params[:node_id]
|
||||||
|
).select(:way_id))
|
||||||
|
|
||||||
# Render the result
|
# Render the result
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -6,13 +6,12 @@ module Api
|
||||||
before_action :set_request_formats
|
before_action :set_request_formats
|
||||||
|
|
||||||
def index
|
def index
|
||||||
relation_ids = RelationMember.where(:member_type => "Relation", :member_id => params[:relation_id]).collect(&:relation_id).uniq
|
@relations = Relation
|
||||||
|
.visible
|
||||||
@relations = []
|
.where(:id => RelationMember.where(
|
||||||
|
:member_type => "Relation",
|
||||||
Relation.find(relation_ids).each do |relation|
|
:member_id => params[:relation_id]
|
||||||
@relations << relation if relation.visible
|
).select(:relation_id))
|
||||||
end
|
|
||||||
|
|
||||||
# Render the result
|
# Render the result
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -6,13 +6,12 @@ module Api
|
||||||
before_action :set_request_formats
|
before_action :set_request_formats
|
||||||
|
|
||||||
def index
|
def index
|
||||||
relation_ids = RelationMember.where(:member_type => "Way", :member_id => params[:way_id]).collect(&:relation_id).uniq
|
@relations = Relation
|
||||||
|
.visible
|
||||||
@relations = []
|
.where(:id => RelationMember.where(
|
||||||
|
:member_type => "Way",
|
||||||
Relation.find(relation_ids).each do |relation|
|
:member_id => params[:way_id]
|
||||||
@relations << relation if relation.visible
|
).select(:relation_id))
|
||||||
end
|
|
||||||
|
|
||||||
# Render the result
|
# Render the result
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue