Skip to content

Commit 5ebcb73

Browse files
author
Robert Mosolgo
authored
Merge pull request rmosolgo#2547 from newtonry/has-next-page-exists
Use exists? optimize RelationConnection.has_next_page for ActiveRecord relations
2 parents 74f736b + 4ce6fe5 commit 5ebcb73

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

lib/graphql/relay/relation_connection.rb

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,16 @@ def cursor_from_node(item)
2525

2626
def has_next_page
2727
if first
28-
paged_nodes.length >= first && sliced_nodes_count > first
29-
elsif GraphQL::Relay::ConnectionType.bidirectional_pagination && last
30-
sliced_nodes_count >= last
31-
else
32-
false
28+
if defined?(ActiveRecord::Relation) && nodes.is_a?(ActiveRecord::Relation)
29+
initial_offset = after ? offset_from_cursor(after) : 0
30+
return paged_nodes.length >= first && nodes.offset(first + initial_offset).exists?
31+
end
32+
return paged_nodes.length >= first && sliced_nodes_count > first
33+
end
34+
if GraphQL::Relay::ConnectionType.bidirectional_pagination && last
35+
return sliced_nodes_count >= last
3336
end
37+
false
3438
end
3539

3640
def has_previous_page

0 commit comments

Comments
 (0)