parse-stack 1.8.0 → 1.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.solargraph.yml +23 -0
  3. data/.travis.yml +0 -1
  4. data/Gemfile +13 -12
  5. data/Gemfile.lock +88 -51
  6. data/README.md +2 -4
  7. data/Rakefile +14 -14
  8. data/lib/parse/api/aggregate.rb +4 -7
  9. data/lib/parse/api/all.rb +1 -1
  10. data/lib/parse/api/analytics.rb +0 -3
  11. data/lib/parse/api/batch.rb +3 -5
  12. data/lib/parse/api/cloud_functions.rb +0 -3
  13. data/lib/parse/api/config.rb +0 -4
  14. data/lib/parse/api/files.rb +3 -7
  15. data/lib/parse/api/hooks.rb +4 -8
  16. data/lib/parse/api/objects.rb +7 -12
  17. data/lib/parse/api/push.rb +0 -4
  18. data/lib/parse/api/schema.rb +2 -6
  19. data/lib/parse/api/server.rb +4 -7
  20. data/lib/parse/api/sessions.rb +2 -5
  21. data/lib/parse/api/users.rb +9 -14
  22. data/lib/parse/client.rb +54 -50
  23. data/lib/parse/client/authentication.rb +29 -33
  24. data/lib/parse/client/batch.rb +8 -11
  25. data/lib/parse/client/body_builder.rb +19 -20
  26. data/lib/parse/client/caching.rb +23 -28
  27. data/lib/parse/client/protocol.rb +11 -12
  28. data/lib/parse/client/request.rb +4 -6
  29. data/lib/parse/client/response.rb +5 -7
  30. data/lib/parse/model/acl.rb +14 -12
  31. data/lib/parse/model/associations/belongs_to.rb +14 -21
  32. data/lib/parse/model/associations/collection_proxy.rb +328 -329
  33. data/lib/parse/model/associations/has_many.rb +18 -25
  34. data/lib/parse/model/associations/has_one.rb +6 -11
  35. data/lib/parse/model/associations/pointer_collection_proxy.rb +5 -8
  36. data/lib/parse/model/associations/relation_collection_proxy.rb +5 -9
  37. data/lib/parse/model/bytes.rb +8 -10
  38. data/lib/parse/model/classes/installation.rb +2 -4
  39. data/lib/parse/model/classes/product.rb +2 -5
  40. data/lib/parse/model/classes/role.rb +3 -5
  41. data/lib/parse/model/classes/session.rb +2 -5
  42. data/lib/parse/model/classes/user.rb +20 -16
  43. data/lib/parse/model/core/actions.rb +31 -46
  44. data/lib/parse/model/core/builder.rb +6 -6
  45. data/lib/parse/model/core/errors.rb +0 -1
  46. data/lib/parse/model/core/fetching.rb +45 -50
  47. data/lib/parse/model/core/properties.rb +51 -66
  48. data/lib/parse/model/core/querying.rb +291 -294
  49. data/lib/parse/model/core/schema.rb +89 -92
  50. data/lib/parse/model/date.rb +16 -17
  51. data/lib/parse/model/file.rb +171 -174
  52. data/lib/parse/model/geopoint.rb +12 -16
  53. data/lib/parse/model/model.rb +31 -37
  54. data/lib/parse/model/object.rb +47 -53
  55. data/lib/parse/model/pointer.rb +177 -176
  56. data/lib/parse/model/push.rb +8 -10
  57. data/lib/parse/model/shortnames.rb +1 -2
  58. data/lib/parse/model/time_zone.rb +3 -5
  59. data/lib/parse/query.rb +34 -35
  60. data/lib/parse/query/constraint.rb +4 -6
  61. data/lib/parse/query/constraints.rb +21 -29
  62. data/lib/parse/query/operation.rb +8 -11
  63. data/lib/parse/query/ordering.rb +45 -49
  64. data/lib/parse/stack.rb +11 -12
  65. data/lib/parse/stack/generators/rails.rb +28 -30
  66. data/lib/parse/stack/generators/templates/model.erb +5 -6
  67. data/lib/parse/stack/generators/templates/model_installation.rb +0 -1
  68. data/lib/parse/stack/generators/templates/model_role.rb +0 -1
  69. data/lib/parse/stack/generators/templates/model_session.rb +0 -1
  70. data/lib/parse/stack/generators/templates/model_user.rb +0 -1
  71. data/lib/parse/stack/generators/templates/parse.rb +9 -9
  72. data/lib/parse/stack/generators/templates/webhooks.rb +1 -2
  73. data/lib/parse/stack/railtie.rb +2 -4
  74. data/lib/parse/stack/tasks.rb +70 -86
  75. data/lib/parse/stack/version.rb +1 -1
  76. data/lib/parse/webhooks.rb +19 -26
  77. data/lib/parse/webhooks/payload.rb +26 -28
  78. data/lib/parse/webhooks/registration.rb +23 -31
  79. data/parse-stack.gemspec +25 -25
  80. data/parse-stack.png +0 -0
  81. metadata +13 -7
  82. data/.github/parse-ruby-sdk.png +0 -0
@@ -1,9 +1,10 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../query.rb'
5
- require_relative '../client.rb'
6
- require 'active_model_serializers'
4
+ require_relative "../query.rb"
5
+ require_relative "../client.rb"
6
+ require "active_model_serializers"
7
+
7
8
  module Parse
8
9
  # This class represents the API to send push notification to devices that are
9
10
  # available in the Installation table. Push notifications are implemented
@@ -68,7 +69,7 @@ module Parse
68
69
  # @!attribute [rw] channels
69
70
  # @return [Array] an array of strings for subscribed channels.
70
71
  attr_accessor :query, :alert, :badge, :sound, :title, :data,
71
- :expiration_time, :expiration_interval, :push_time, :channels
72
+ :expiration_time, :expiration_interval, :push_time, :channels
72
73
 
73
74
  alias_method :message, :alert
74
75
  alias_method :message=, :alert=
@@ -134,14 +135,13 @@ module Parse
134
135
  msg = {
135
136
  data: {
136
137
  alert: alert,
137
- badge: badge || "Increment"
138
- }
138
+ badge: badge || "Increment",
139
+ },
139
140
  }
140
141
  msg[:data][:sound] = sound if sound.present?
141
142
  msg[:data][:title] = title if title.present?
142
143
  msg[:data].merge! @data if @data.is_a?(Hash)
143
144
 
144
-
145
145
  if @expiration_time.present?
146
146
  msg[:expiration_time] = @expiration_time.respond_to?(:iso8601) ? @expiration_time.iso8601(3) : @expiration_time
147
147
  end
@@ -170,9 +170,7 @@ module Parse
170
170
  def send(message = nil)
171
171
  @alert = message if message.is_a?(String)
172
172
  @data = message if message.is_a?(Hash)
173
- client.push( payload.as_json )
173
+ client.push(payload.as_json)
174
174
  end
175
-
176
175
  end
177
-
178
176
  end
@@ -1,5 +1,4 @@
1
-
2
- require_relative 'object'
1
+ require_relative "object"
3
2
 
4
3
  # Simple include to use short verion of core class names
5
4
  ::Installation = Parse::Installation unless defined?(::Installation)
@@ -1,8 +1,8 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'active_support'
5
- require 'active_support/values/time_zone'
4
+ require "active_support"
5
+ require "active_support/values/time_zone"
6
6
  require_relative "model"
7
7
 
8
8
  module Parse
@@ -118,7 +118,7 @@ module Parse
118
118
  @name = timezone
119
119
  @zone = nil
120
120
  else
121
- raise ArgumentError, 'Invalid value passed to Parse::TimeZone#zone.'
121
+ raise ArgumentError, "Invalid value passed to Parse::TimeZone#zone."
122
122
  end
123
123
  end
124
124
 
@@ -137,7 +137,5 @@ module Parse
137
137
  def valid?
138
138
  ActiveSupport::TimeZone[to_s].present?
139
139
  end
140
-
141
140
  end
142
-
143
141
  end
@@ -5,11 +5,11 @@ require_relative "client"
5
5
  require_relative "query/operation"
6
6
  require_relative "query/constraints"
7
7
  require_relative "query/ordering"
8
- require 'active_model'
9
- require 'active_model_serializers'
10
- require 'active_support'
11
- require 'active_support/inflector'
12
- require 'active_support/core_ext'
8
+ require "active_model"
9
+ require "active_model_serializers"
10
+ require "active_support"
11
+ require "active_support/inflector"
12
+ require "active_support/core_ext"
13
13
 
14
14
  module Parse
15
15
  # The {Parse::Query} class provides the lower-level querying interface for
@@ -62,7 +62,7 @@ module Parse
62
62
  # You can build your own custom query constraints by creating a `Parse::Constraint`
63
63
  # subclass. For all these `where` clauses assume `q` is a `Parse::Query` object.
64
64
  class Query
65
- extend ::ActiveModel::Callbacks
65
+ extend ::ActiveModel::Callbacks
66
66
  include Parse::Client::Connectable
67
67
  include Enumerable
68
68
  # @!group Callbacks
@@ -196,8 +196,8 @@ module Parse
196
196
  # @param table [String] the name of the Parse collection to query. (ex. "_User")
197
197
  # @param constraints [Hash] a set of query constraints.
198
198
  # @return [Query] a new query for the Parse collection with the passed in constraints.
199
- def all(table, constraints = {limit: :max})
200
- self.new(table, constraints.reverse_merge({limit: :max}))
199
+ def all(table, constraints = { limit: :max })
200
+ self.new(table, constraints.reverse_merge({ limit: :max }))
201
201
  end
202
202
 
203
203
  # This methods takes a set of constraints and merges them to build a final
@@ -205,7 +205,7 @@ module Parse
205
205
  # @param where [Array] an array of {Parse::Constraint} objects.
206
206
  # @return [Hash] a hash representing the compiled query
207
207
  def compile_where(where)
208
- constraint_reduce( where )
208
+ constraint_reduce(where)
209
209
  end
210
210
 
211
211
  # @!visibility private
@@ -214,7 +214,7 @@ module Parse
214
214
  clauses.reduce({}) do |clause, subclause|
215
215
  #puts "Merging Subclause: #{subclause.as_json}"
216
216
 
217
- clause.deep_merge!( subclause.as_json || {} )
217
+ clause.deep_merge!(subclause.as_json || {})
218
218
  clause
219
219
  end
220
220
  end
@@ -228,7 +228,6 @@ module Parse
228
228
  query.define_singleton_method(:inspect) { self.results.to_a.inspect }
229
229
  end
230
230
  end
231
-
232
231
  end
233
232
 
234
233
  # @!attribute [r] client
@@ -334,6 +333,7 @@ module Parse
334
333
  end # each
335
334
  self #chaining
336
335
  end
336
+
337
337
  alias_method :query, :conditions
338
338
  alias_method :append, :conditions
339
339
 
@@ -418,7 +418,7 @@ module Parse
418
418
  # @param amount [Integer] The number of records to skip.
419
419
  # @return [self]
420
420
  def skip(amount)
421
- @skip = [0,amount.to_i].max
421
+ @skip = [0, amount.to_i].max
422
422
  @results = nil
423
423
  self #chaining
424
424
  end
@@ -438,7 +438,7 @@ module Parse
438
438
  # @return [self]
439
439
  def limit(count)
440
440
  if count.is_a?(Numeric)
441
- @limit = [ 0, count.to_i ].max
441
+ @limit = [0, count.to_i].max
442
442
  elsif count == :max
443
443
  @limit = :max
444
444
  else
@@ -584,7 +584,7 @@ module Parse
584
584
  # @return [Query] the combined query with an OR clause.
585
585
  def or_where(where_clauses = [])
586
586
  where_clauses = where_clauses.where if where_clauses.is_a?(Parse::Query)
587
- where_clauses = Parse::Query.new(@table, where_clauses ).where if where_clauses.is_a?(Hash)
587
+ where_clauses = Parse::Query.new(@table, where_clauses).where if where_clauses.is_a?(Hash)
588
588
  return self if where_clauses.blank?
589
589
  # we can only have one compound query constraint. If we need to add another OR clause
590
590
  # let's find the one we have (if any)
@@ -594,7 +594,7 @@ module Parse
594
594
  # if we don't have a OR clause to reuse, then create a new one with then
595
595
  # current set of constraints
596
596
  if compound.blank?
597
- compound = Parse::Constraint::CompoundQueryConstraint.new :or, [ Parse::Query.compile_where(remaining_clauses) ]
597
+ compound = Parse::Constraint::CompoundQueryConstraint.new :or, [Parse::Query.compile_where(remaining_clauses)]
598
598
  end
599
599
  # then take the where clauses from the second query and append them.
600
600
  compound.value.push Parse::Query.compile_where(where_clauses)
@@ -606,10 +606,10 @@ module Parse
606
606
  # @see #or_where
607
607
  # @return [Query] the combined query with an OR clause.
608
608
  def |(other_query)
609
- raise ArgumentError, "Parse queries must be of the same class #{@table}." unless @table == other_query.table
610
- copy_query = self.clone
611
- copy_query.or_where other_query.where
612
- copy_query
609
+ raise ArgumentError, "Parse queries must be of the same class #{@table}." unless @table == other_query.table
610
+ copy_query = self.clone
611
+ copy_query.or_where other_query.where
612
+ copy_query
613
613
  end
614
614
 
615
615
  # Queries can be made using distinct, allowing you find unique values for a specified field.
@@ -635,7 +635,7 @@ module Parse
635
635
  compile_query[:distinct] = Query.format_field(field).to_sym
636
636
  @count = old_count_value
637
637
  # perform aggregation
638
- return client.aggregate_objects(@table, compile_query.as_json, _opts ).result
638
+ return client.aggregate_objects(@table, compile_query.as_json, _opts).result
639
639
  else
640
640
  raise ArgumentError, "Invalid field name passed to `distinct`."
641
641
  end
@@ -654,7 +654,7 @@ module Parse
654
654
  def count
655
655
  old_value = @count
656
656
  @count = 1
657
- res = client.find_objects(@table, compile.as_json, _opts ).count
657
+ res = client.find_objects(@table, compile.as_json, _opts).count
658
658
  @count = old_value
659
659
  res
660
660
  end
@@ -663,8 +663,8 @@ module Parse
663
663
  # @return [Array]
664
664
  # @see Array#each
665
665
  def each
666
- return results.enum_for(:each) unless block_given? # Sparkling magic!
667
- results.each(&Proc.new)
666
+ return results.enum_for(:each) unless block_given? # Sparkling magic!
667
+ results.each(&Proc.new)
668
668
  end
669
669
 
670
670
  # @yield a block yield for each object in the result
@@ -718,7 +718,7 @@ module Parse
718
718
  compiled_query[:limit] = _limit if _limit < batch_size
719
719
  end
720
720
 
721
- response = fetch!( compiled_query )
721
+ response = fetch!(compiled_query)
722
722
  break if response.error? || response.results.empty?
723
723
 
724
724
  items = response.results
@@ -766,13 +766,13 @@ module Parse
766
766
  # @param compiled_query [Hash] the compiled query
767
767
  # @return [Parse::Response] a response for a query request.
768
768
  def fetch!(compiled_query)
769
-
770
- response = client.find_objects(@table, compiled_query.as_json, _opts )
769
+ response = client.find_objects(@table, compiled_query.as_json, _opts)
771
770
  if response.error?
772
771
  puts "[ParseQuery] #{response.error}"
773
772
  end
774
773
  response
775
774
  end
775
+
776
776
  alias_method :execute!, :fetch!
777
777
 
778
778
  # Executes the query and builds the result set of Parse::Objects that matched.
@@ -801,7 +801,7 @@ module Parse
801
801
  if block_given?
802
802
  max_results(raw: raw, &Proc.new)
803
803
  elsif @limit.is_a?(Numeric)
804
- response = fetch!( compile )
804
+ response = fetch!(compile)
805
805
  return [] if response.error?
806
806
  items = raw ? response.results : decode(response.results)
807
807
  return items.each(&Proc.new) if block_given?
@@ -812,6 +812,7 @@ module Parse
812
812
  end
813
813
  @results
814
814
  end
815
+
815
816
  alias_method :result, :results
816
817
 
817
818
  # Similar to {#results} but takes an additional set of conditions to apply. This
@@ -821,7 +822,7 @@ module Parse
821
822
  # @return [Array<Hash>] if raw is set to true, a set of Parse JSON hashes.
822
823
  # @return [Array<Parse::Object>] if raw is set to false, a list of matching Parse::Object subclasses.
823
824
  # @see #results
824
- def all(expressions = {limit: :max})
825
+ def all(expressions = { limit: :max })
825
826
  conditions(expressions)
826
827
  return results(&Proc.new) if block_given?
827
828
  results
@@ -859,9 +860,9 @@ module Parse
859
860
  q[:limit] = @limit if @limit.is_a?(Numeric) && @limit > 0
860
861
  q[:skip] = @skip if @skip > 0
861
862
 
862
- q[:include] = @includes.join(',') unless @includes.empty?
863
- q[:keys] = @keys.join(',') unless @keys.empty?
864
- q[:order] = @order.join(',') unless @order.empty?
863
+ q[:include] = @includes.join(",") unless @includes.empty?
864
+ q[:keys] = @keys.join(",") unless @keys.empty?
865
+ q[:order] = @order.join(",") unless @order.empty?
865
866
  unless @where.empty?
866
867
  q[:where] = Parse::Query.compile_where(@where)
867
868
  q[:where] = q[:where].to_json if encode
@@ -881,15 +882,13 @@ module Parse
881
882
 
882
883
  # @return [Hash] a hash representing just the `where` clause of this query.
883
884
  def compile_where
884
- self.class.compile_where( @where || [] )
885
+ self.class.compile_where(@where || [])
885
886
  end
886
887
 
887
888
  # Retruns a formatted JSON string representing the query, useful for debugging.
888
889
  # @return [String]
889
890
  def pretty
890
- JSON.pretty_generate( as_json )
891
+ JSON.pretty_generate(as_json)
891
892
  end
892
-
893
893
  end # Query
894
-
895
894
  end # Parse
@@ -1,9 +1,9 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative 'operation'
5
- require 'time'
6
- require 'date'
4
+ require_relative "operation"
5
+ require "time"
6
+ require "date"
7
7
 
8
8
  module Parse
9
9
  # Constraints are the heart of the Parse::Query system.
@@ -39,12 +39,11 @@ module Parse
39
39
  # it most likely is just the field name, so let's assume they want
40
40
  # the default equality operation.
41
41
  if operation.is_a?(Operation) == false && operation.respond_to?(:to_sym)
42
- operation = Operation.new(operation.to_sym, self.class.operand)
42
+ operation = Operation.new(operation.to_sym, self.class.operand)
43
43
  end
44
44
  @operation = operation
45
45
  @value = value
46
46
  yield(self) if block_given?
47
-
48
47
  end
49
48
 
50
49
  class << self
@@ -122,7 +121,6 @@ module Parse
122
121
  end
123
122
  d
124
123
  end
125
-
126
124
  end
127
125
 
128
126
  # @return [Integer] the precedence of this constraint
@@ -1,7 +1,7 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative 'constraint'
4
+ require_relative "constraint"
5
5
 
6
6
  # Each constraint type is a subclass of Parse::Constraint
7
7
  # We register each keyword (which is the Parse query operator)
@@ -60,7 +60,7 @@ module Parse
60
60
  value = formatted_value
61
61
  # if it is already a pointer value, just return the constraint. Allows for
62
62
  # supporting strings, symbols and pointers.
63
- return { @operation.operand => value } if value.is_a?(Parse::Pointer)
63
+ return { @operation.operand => value } if value.is_a?(Parse::Pointer)
64
64
 
65
65
  begin
66
66
  klass = className.constantize
@@ -79,9 +79,8 @@ module Parse
79
79
  raise ArgumentError, "#{self.class}: value must be of string type representing a Parse object id."
80
80
  end
81
81
  value.strip!
82
- return { @operation.operand => klass.pointer(value) }
82
+ return { @operation.operand => klass.pointer(value) }
83
83
  end
84
-
85
84
  end
86
85
 
87
86
  # Equivalent to the `$or` Parse query operation. This is useful if you want to
@@ -101,7 +100,6 @@ module Parse
101
100
  or_clauses = formatted_value
102
101
  return { :$or => Array.wrap(or_clauses) }
103
102
  end
104
-
105
103
  end
106
104
 
107
105
  # Equivalent to the `$lte` Parse query operation. The alias `on_or_before` is provided for readability.
@@ -154,6 +152,7 @@ module Parse
154
152
  register :less_than
155
153
  register :before
156
154
  end
155
+
157
156
  # Equivalent to the `$gt` Parse query operation. The alias `after` is provided for readability.
158
157
  # q.where :field.gt => value
159
158
  # q.where :field.after => date
@@ -252,13 +251,12 @@ module Parse
252
251
  end
253
252
 
254
253
  if value == true
255
- return { @operation.operand => { key => false} }
254
+ return { @operation.operand => { key => false } }
256
255
  else
257
256
  #current bug in parse where if you want exists => true with geo queries
258
257
  # we should map it to a "not equal to null" constraint
259
258
  return { @operation.operand => { Parse::Constraint::NotEqualConstraint.key => nil } }
260
259
  end
261
-
262
260
  end
263
261
  end
264
262
 
@@ -319,7 +317,6 @@ module Parse
319
317
  val = [val].compact unless val.is_a?(Array)
320
318
  { @operation.operand => { key => val } }
321
319
  end
322
-
323
320
  end
324
321
 
325
322
  # Equivalent to the `$nin` Parse query operation. Checks whether the value in
@@ -357,7 +354,6 @@ module Parse
357
354
  val = [val].compact unless val.is_a?(Array)
358
355
  { @operation.operand => { key => val } }
359
356
  end
360
-
361
357
  end
362
358
 
363
359
  # Equivalent to the $all Parse query operation. Checks whether the value in
@@ -585,7 +581,6 @@ module Parse
585
581
  contraint_keyword :$notInQuery
586
582
  register :excludes
587
583
  register :not_in_query
588
-
589
584
  end
590
585
 
591
586
  # Equivalent to the `$nearSphere` Parse query operation. This is only applicable
@@ -631,7 +626,6 @@ module Parse
631
626
  end
632
627
  { @operation.operand => { key => point } }
633
628
  end
634
-
635
629
  end
636
630
 
637
631
  # Equivalent to the `$within` Parse query operation and `$box` geopoint
@@ -661,10 +655,10 @@ module Parse
661
655
  def build
662
656
  geopoint_values = formatted_value
663
657
  unless geopoint_values.is_a?(Array) && geopoint_values.count == 2 &&
664
- geopoint_values.first.is_a?(Parse::GeoPoint) && geopoint_values.last.is_a?(Parse::GeoPoint)
665
- raise(ArgumentError, '[Parse::Query] Invalid query value parameter passed to `within_box` constraint. ' +
666
- 'Values in array must be `Parse::GeoPoint` objects and ' +
667
- 'it should be in an array format: [southwestPoint, northeastPoint]' )
658
+ geopoint_values.first.is_a?(Parse::GeoPoint) && geopoint_values.last.is_a?(Parse::GeoPoint)
659
+ raise(ArgumentError, "[Parse::Query] Invalid query value parameter passed to `within_box` constraint. " +
660
+ "Values in array must be `Parse::GeoPoint` objects and " +
661
+ "it should be in an array format: [southwestPoint, northeastPoint]")
668
662
  end
669
663
  { @operation.operand => { :$within => { :$box => geopoint_values } } }
670
664
  end
@@ -703,18 +697,18 @@ module Parse
703
697
  def build
704
698
  geopoint_values = formatted_value
705
699
  unless geopoint_values.is_a?(Array) &&
706
- geopoint_values.all? {|point| point.is_a?(Parse::GeoPoint) } &&
700
+ geopoint_values.all? { |point| point.is_a?(Parse::GeoPoint) } &&
707
701
  geopoint_values.count > 2
708
- raise ArgumentError, '[Parse::Query] Invalid query value parameter passed to'\
709
- ' `within_polygon` constraint: Value must be an array with 3'\
710
- ' or more `Parse::GeoPoint` objects'
702
+ raise ArgumentError, "[Parse::Query] Invalid query value parameter passed to" \
703
+ " `within_polygon` constraint: Value must be an array with 3" \
704
+ " or more `Parse::GeoPoint` objects"
711
705
  end
712
706
 
713
707
  { @operation.operand => { :$geoWithin => { :$polygon => geopoint_values } } }
714
708
  end
715
709
  end
716
710
 
717
-
711
+ # Equivalent to the full text search support with `$text` with a set of search crieteria.
718
712
  class FullTextSearchQueryConstraint < Constraint
719
713
  # @!method text_search
720
714
  # A registered method on a symbol to create the constraint. Maps to Parse
@@ -743,27 +737,25 @@ module Parse
743
737
  params = { :$term => params.to_s } if params.is_a?(String) || params.is_a?(Symbol)
744
738
 
745
739
  unless params.is_a?(Hash)
746
- raise ArgumentError, '[Parse::Query] Invalid query value parameter passed to'\
747
- ' `text_search` constraint: Value must be a string or a hash of parameters.'
740
+ raise ArgumentError, "[Parse::Query] Invalid query value parameter passed to" \
741
+ " `text_search` constraint: Value must be a string or a hash of parameters."
748
742
  end
749
743
 
750
- params = params.inject({}) do |h,(k,v)|
744
+ params = params.inject({}) do |h, (k, v)|
751
745
  u = k.to_s
752
- u = u.columnize.prepend('$') unless u.start_with?('$')
746
+ u = u.columnize.prepend("$") unless u.start_with?("$")
753
747
  h[u] = v
754
748
  h
755
749
  end
756
750
 
757
751
  unless params["$term"].present?
758
- raise ArgumentError, "[Parse::Query] Invalid query value parameter passed to"\
759
- " `text_search` constraint: Missing required `$term` subkey.\n"\
760
- "\tExample: #{@operation.operand}.text_search => { term: 'text to search' }"
752
+ raise ArgumentError, "[Parse::Query] Invalid query value parameter passed to" \
753
+ " `text_search` constraint: Missing required `$term` subkey.\n" \
754
+ "\tExample: #{@operation.operand}.text_search => { term: 'text to search' }"
761
755
  end
762
756
 
763
757
  { @operation.operand => { :$text => { :$search => params } } }
764
758
  end
765
759
  end
766
-
767
760
  end
768
-
769
761
  end