rhino_project_core 0.20.0.beta.86 → 0.20.0.beta.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b3d71be7179c98d595485a0f75db9673b204ab505de3a252721abad33fd6623
4
- data.tar.gz: 2d1207a1e3609770a85be157d7a16f864d48380a2d6bbc72e90c4187a0fa48a8
3
+ metadata.gz: 1a40a1d4b37eb0bd406af8e4e641de00463d5f686d6de7792196f2c8872a4902
4
+ data.tar.gz: e574ae64748cbda07d20063ec672ff804ffede8061a744f45a173fa2249d303e
5
5
  SHA512:
6
- metadata.gz: cbd57f3008e58966718d1bc9d2283993c94c8c039b6b472471587672387b4d019192a20a2df42199c4485b4de88f3576ac2660823548e6a2b5cb17a5e2bb2486
7
- data.tar.gz: e9967c9bdbac471568cc5afd74502b4dc1dfb95c3c9eb8f21d4433090001d2b0a6910d9939fb1bb024ec525a80cddc3802e1cc83ef249f2ff83f973eadb733c7
6
+ metadata.gz: f4e120075eb107061f58764312f22c3d1fe907fc834921f66c68889e4044ca677e4596d406f9bc99a20ce1cdb25eff8d3963627a505422856326706752463058
7
+ data.tar.gz: 8baa41117e9a7f71c861de59fc7b49e0bff7bbd43e6c23a7b6aa691e1c9f50cbe5b2b9fc02a64e3499901002ccbc2839951d3c58ef1505984a8107996e2e2aef
data/lib/rhino/engine.rb CHANGED
@@ -12,6 +12,7 @@ require "devise"
12
12
  require "devise_invitable"
13
13
  require "devise_token_auth"
14
14
  require "friendly_id"
15
+ require "geocoder"
15
16
  require "omniauth"
16
17
  require "omniauth-azure-activedirectory-v2"
17
18
  require "omniauth-auth0"
@@ -45,7 +45,8 @@ module Rhino
45
45
  end
46
46
 
47
47
  def rhino_policy(policy)
48
- self._policy_class = "rhino/#{policy}_policy".classify.safe_constantize || "#{policy}_policy".classify.safe_constantize
48
+ # Look for local policy first, then look in the rhino namespace
49
+ self._policy_class = "#{policy}_policy".classify.safe_constantize || "rhino/#{policy}_policy".classify.safe_constantize
49
50
 
50
51
  raise "Policy #{policy} not found for #{name}" unless _policy_class
51
52
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rhino
4
+ module Sieve
5
+ class Geospatial
6
+ def initialize(app)
7
+ @app = app
8
+ end
9
+
10
+ # geospatial={near: {location: { latitude: 41.2565, longitude: -95.9345 }, max_distance: 10, units: 'km'}}
11
+ # geospatial={near: {location: 'Omaha, NE, US', max_distance: 10, units: 'km'}}
12
+ def resolve(scope, params)
13
+ return @app.resolve(scope, params) unless valid?(params)
14
+
15
+ @app.resolve(
16
+ scope.near(
17
+ @location_params,
18
+ @near_params[:max_distance],
19
+ units: @near_params[:units]
20
+ ), params
21
+ )
22
+ end
23
+
24
+ private
25
+ def valid?(params) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
26
+ @geospatial_params = params[:geospatial]
27
+ return false unless @geospatial_params.is_a?(ActionController::Parameters)
28
+
29
+ @near_params = @geospatial_params[:near]
30
+ return false unless @near_params.is_a?(ActionController::Parameters)
31
+
32
+ @location_params = @near_params[:location]
33
+ if @location_params.is_a?(String)
34
+ @location_params = @near_params[:location]
35
+ elsif @location_params.is_a?(ActionController::Parameters) && @location_params[:latitude].present? && @location_params[:longitude].present?
36
+ @location_params = [@location_params[:latitude], @location_params[:longitude]]
37
+ else
38
+ return false
39
+ end
40
+
41
+ @near_params[:max_distance].present?
42
+ end
43
+ end
44
+ end
45
+ end
data/lib/rhino/sieve.rb CHANGED
@@ -5,6 +5,7 @@ module Rhino
5
5
  extend ActiveSupport::Autoload
6
6
 
7
7
  autoload :Filter
8
+ autoload :Geospatial
8
9
  autoload :Limit
9
10
  autoload :Offset
10
11
  autoload :Order
data/lib/rhino/version.rb CHANGED
@@ -10,7 +10,7 @@ module Rhino
10
10
  MAJOR = 0
11
11
  MINOR = 20
12
12
  TINY = 0
13
- PRE = "beta.86"
13
+ PRE = "beta.88"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -65,6 +65,8 @@ module Rhino
65
65
  self.sieves = Rhino::SieveStack.new do |sieve|
66
66
  sieve.use Rhino::Sieve::Filter
67
67
 
68
+ sieve.use Rhino::Sieve::Geospatial
69
+
68
70
  sieve.use Rhino::Sieve::Search
69
71
 
70
72
  sieve.use Rhino::Sieve::Order
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhino_project_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0.beta.86
4
+ version: 0.20.0.beta.88
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Rosevear
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-22 00:00:00.000000000 Z
11
+ date: 2024-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -156,6 +156,20 @@ dependencies:
156
156
  - - '='
157
157
  - !ruby/object:Gem::Version
158
158
  version: 5.3.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: geocoder
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - '='
164
+ - !ruby/object:Gem::Version
165
+ version: 1.8.2
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '='
171
+ - !ruby/object:Gem::Version
172
+ version: 1.8.2
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: js_regex
161
175
  requirement: !ruby/object:Gem::Requirement
@@ -471,6 +485,7 @@ files:
471
485
  - lib/rhino/resource/sieves.rb
472
486
  - lib/rhino/sieve.rb
473
487
  - lib/rhino/sieve/filter.rb
488
+ - lib/rhino/sieve/geospatial.rb
474
489
  - lib/rhino/sieve/helpers.rb
475
490
  - lib/rhino/sieve/limit.rb
476
491
  - lib/rhino/sieve/offset.rb