From 717adf88b3801dd2e7d10b3fc787102aef2171ba Mon Sep 17 00:00:00 2001 From: Stephen Ierodiaconou Date: Wed, 25 Sep 2024 14:44:37 +0200 Subject: [PATCH] Tweaking result predecates --- lib/quo/query.rb | 16 ++++------------ lib/quo/results.rb | 18 +++++++++++++++++- sig/generated/quo/query.rbs | 10 ++-------- sig/generated/quo/results.rbs | 17 +++++++++++++++++ 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/lib/quo/query.rb b/lib/quo/query.rb index 90285a2..85ab593 100644 --- a/lib/quo/query.rb +++ b/lib/quo/query.rb @@ -301,6 +301,10 @@ def results #: Quo::Results :find, :include?, :each_with_object, + :none?, + :any?, + :empty?, + :exists?, to: :results # @rbs @__transformer: nil | ^(untyped, ?Integer) -> untyped @@ -313,18 +317,6 @@ def transform(&block) self end - # Are there any results for this query? - def exists? #: bool - return configured_query.exists? if relation? - configured_query.present? - end - - # Are there no results for this query? - def none? #: bool - !exists? - end - alias_method :empty?, :none? - # Is this query object a ActiveRecord relation under the hood? def relation? #: bool test_relation(configured_query) diff --git a/lib/quo/results.rb b/lib/quo/results.rb index c8c7e57..9c6bc40 100644 --- a/lib/quo/results.rb +++ b/lib/quo/results.rb @@ -17,7 +17,13 @@ def initialize(query, transformer: nil) @transformer = transformer end - # TODO: RBS for these, + # @rbs! + # def include?: () -> bool + # def member?: () -> bool + # def all?: () -> bool + # def any?: () -> bool + # def none?: () -> bool + # def one?: () -> bool def_delegators :unwrapped, :include?, :member?, @@ -28,6 +34,16 @@ def initialize(query, transformer: nil) def_delegators :query, :count + # Are there any results for this query? + def exists? #: bool + return unwrapped.exists? if query.relation? + configured_query.present? + end + + def empty? #: bool + !exists? + end + # @rbs &block: (untyped, *untyped) -> untyped # @rbs return: Hash[untyped, Array[untyped]] def group_by(&block) diff --git a/sig/generated/quo/query.rbs b/sig/generated/quo/query.rbs index 9778f79..df00012 100644 --- a/sig/generated/quo/query.rbs +++ b/sig/generated/quo/query.rbs @@ -72,6 +72,8 @@ module Quo def previous_page_query: () -> Quo::Query + def offset: () -> Integer + # Returns a active record query, or a Quo::Query instance def query: () -> (Quo::Query | ::ActiveRecord::Relation) @@ -148,12 +150,6 @@ module Quo # @rbs return: self def transform: () ?{ (?) -> untyped } -> self - # Are there any results for this query? - def exists?: () -> bool - - # Are there no results for this query? - def none?: () -> bool - # Is this query object a ActiveRecord relation under the hood? def relation?: () -> bool @@ -181,8 +177,6 @@ module Quo def transformer: () -> untyped - def offset: () -> Integer - # The configured query is the underlying query with paging def configured_query: () -> ActiveRecord::Relation diff --git a/sig/generated/quo/results.rbs b/sig/generated/quo/results.rbs index 9d1cdaa..14a77b2 100644 --- a/sig/generated/quo/results.rbs +++ b/sig/generated/quo/results.rbs @@ -9,6 +9,23 @@ module Quo # @rbs return: void def initialize: (Quo::Query query, ?transformer: (^(untyped, ?Integer) -> untyped)?) -> void + def include?: () -> bool + + def member?: () -> bool + + def all?: () -> bool + + def any?: () -> bool + + def none?: () -> bool + + def one?: () -> bool + + # Are there any results for this query? + def exists?: () -> bool + + def empty?: () -> bool + # @rbs &block: (untyped, *untyped) -> untyped # @rbs return: Hash[untyped, Array[untyped]] def group_by: () { (untyped, *untyped) -> untyped } -> Hash[untyped, Array[untyped]]