pg_searchable 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: d0244ce37cfcef0e4b9391ef9751d01a146660bf
4
- data.tar.gz: 235f975076ef6ba068f78f6135d792c78e6e882b
3
+ metadata.gz: d0f35f235f18026427b95a9fd5620f83ad6236c6
4
+ data.tar.gz: 712e910b1aa3bf8a66e7bd353cb0fc18358f2626
5
5
  SHA512:
6
- metadata.gz: 9293c648bdd76a2b81fe062ebfa787b72c03a74abe2a24ea3af433fdef62dca73fd2dfc7e2ffe49e1d0e679a2429fa9582e44c874d487ec8dc3360e1d7c77685
7
- data.tar.gz: a7093702d6aa93692140325374e1f5a5f209baeabaf4d7fbd7d0c2b54c57eb1c321b41676b14a7a3bd3abf3958f29dedba40a1b7ec10cd218abe4b3eae316b69
6
+ metadata.gz: c5ba190060495e370921954a87f011b81806c5ab3122ddb9c878109ad77ee21280e7d064e42e5844f154da294a45d90ef1933398c5f63bce5a5e698e433af999
7
+ data.tar.gz: 9f7b4d1dfc96ab333f6181dd549e7af662ca10287e876ce014ab7d786356293dfd93194892f645ee1f215d96a0eb4b0b4fc3bffe0fa61b25009dc0b4e9d75171
@@ -27,6 +27,10 @@ module PgSearchable
27
27
  scoped.search_for(term, options)
28
28
  end
29
29
 
30
+ def close_to(longitude, latitude, distance_in_miles = 5)
31
+ scoped.close_to(longitude, latitude, distance_in_miles)
32
+ end
33
+
30
34
  private
31
35
  def _pg_searchable_options
32
36
  @_pg_searchable_options ||= DEFAULT_OPTIONS.merge(columns: _pg_searchable_columns)
@@ -64,6 +64,21 @@ module ActiveRecord
64
64
  SQL
65
65
  end
66
66
 
67
+ def add_pg_searchable_point_index(table_name, longitude_column, latitude_column)
68
+ execute %{CREATE INDEX index_#{table_name}_on_#{longitude_column}_#{latitude_column}_point ON #{table_name} using gist (
69
+ ST_GeographyFromText(
70
+ 'SRID=4326;POINT(' || #{table_name}.#{longitude_column} || ' ' || #{table_name}.#{latitude_column} || ')'
71
+ )
72
+ )
73
+ }
74
+ end
75
+
76
+ def remove_pg_searchable_point_index(table_name, longitude_column, latitude_column)
77
+ execute %{
78
+ DROP INDEX index_#{table_name}_on_#{longitude_column}_#{latitude_column}_point
79
+ }
80
+ end
81
+
67
82
  private
68
83
 
69
84
  def _add_pg_searchable_trigger(table_name, column_name, trigger_type = 'tsearch', column_data = '')
@@ -16,14 +16,18 @@ module PgSearchable
16
16
  conditions
17
17
  end
18
18
 
19
- p conditions
20
-
21
- joins(options[:in]).where("#{conditions.join(' OR ')}")
19
+ where("#{conditions.join(' OR ')}")
22
20
  end
23
21
 
24
- def near(latitude, longitude)
25
- puts "searching near #{latitude},#{longitude}"
26
- self
22
+ def close_to(longitude, latitude, distance_in_miles = 5)
23
+ distance_in_meters = (distance_in_miles.to_f * 1609.34).ceil
24
+ longitude_column = "longitude"
25
+ latitude_column = "latitude"
26
+
27
+ where("ST_DWithin(
28
+ ST_GeographyFromText('SRID=4326;POINT(' || #{arel_table.name}.#{longitude_column} || ' ' || #{arel_table.name}.#{latitude_column} || ')'),
29
+ ST_GeographyFromText('SRID=4326;POINT(%f %f)'), %d
30
+ )", longitude, latitude, distance_in_meters)
27
31
  end
28
32
 
29
33
  def rank_by(rank)
@@ -1,3 +1,3 @@
1
1
  module PgSearchable
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_searchable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen St. Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-04 00:00:00.000000000 Z
11
+ date: 2013-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arel