enrichment_db 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/enrichment_db/cache.rb +17 -0
- data/lib/enrichment_db/db.rb +14 -5
- data/lib/enrichment_db/geo/region.rb +15 -7
- data/lib/enrichment_db/helper.rb +1 -0
- data/lib/enrichment_db/language/datum.rb +4 -1
- data/lib/enrichment_db/version.rb +1 -1
- data/test/cache_test.rb +31 -0
- data/test/datum_test.rb +1 -1
- data/test/language/datum_test.rb +11 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4df9713d1120be2a7dbe8af63a95a05d21912d05
|
4
|
+
data.tar.gz: 7cd8617b5f062ab74b72a6c15856a93637ad678a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6c80bd4ffca67734aadcbd11bc46b9ada5411d62800900ecec2205eff23ca3f87fd36c696ba27292611a147d896d1f4014777de6c5c0d3a1d1148ea4b940f33
|
7
|
+
data.tar.gz: b9685ff855a8305f7b1f0b294e7b2cd4296e0fe6e019df91b0cf0f0b6352c83497d4ba4ff9d0f57c014f26e4e128537f319f32d437784aa02739790c280191bb
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
enrichment_db (0.1.
|
4
|
+
enrichment_db (0.1.11)
|
5
5
|
multi_json (~> 1.3)
|
6
6
|
pg
|
7
7
|
pr_geohash
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
minitest (>= 5.0)
|
34
34
|
ruby-progressbar
|
35
35
|
multi_json (1.11.2)
|
36
|
-
pg (0.18.
|
36
|
+
pg (0.18.4)
|
37
37
|
pr_geohash (1.0.0)
|
38
38
|
rake (10.4.2)
|
39
39
|
ruby-progressbar (1.7.5)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}")
|
2
|
+
|
3
|
+
module EnrichmentDb::Cache
|
4
|
+
def self.get(query, values = nil)
|
5
|
+
query_cache(query, values)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.set(query, values = nil, result = nil)
|
9
|
+
query_cache(query, values, result)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.query_cache(query, values, result = nil)
|
13
|
+
key = query + values.to_s
|
14
|
+
@query_cache ||= {}
|
15
|
+
@query_cache[key] ||= result
|
16
|
+
end
|
17
|
+
end
|
data/lib/enrichment_db/db.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'pg'
|
2
|
+
require 'cache'
|
2
3
|
|
3
4
|
module EnrichmentDb
|
4
5
|
|
@@ -40,11 +41,7 @@ module EnrichmentDb
|
|
40
41
|
|
41
42
|
case type
|
42
43
|
when :select, 'select', '\d'
|
43
|
-
|
44
|
-
EnrichmentDb::db_connection.exec(query, values)
|
45
|
-
else
|
46
|
-
EnrichmentDb::db_connection.exec(query)
|
47
|
-
end
|
44
|
+
get_or_request(query, values)
|
48
45
|
when :insert, :drop, :delete, 'insert', 'drop', 'delete'
|
49
46
|
fail EnrichmentDb::RequestError, "Postgres method '#{type}' is unsupported"
|
50
47
|
else
|
@@ -52,6 +49,18 @@ module EnrichmentDb
|
|
52
49
|
end
|
53
50
|
end
|
54
51
|
|
52
|
+
def self.get_or_request(query, values = nil)
|
53
|
+
result = EnrichmentDb::Cache.get(query, values)
|
54
|
+
return result unless result.nil?
|
55
|
+
|
56
|
+
result = if values
|
57
|
+
EnrichmentDb::db_connection.exec(query, values)
|
58
|
+
else
|
59
|
+
EnrichmentDb::db_connection.exec(query)
|
60
|
+
end
|
61
|
+
EnrichmentDb::Cache.set(query, values, result)
|
62
|
+
end
|
63
|
+
|
55
64
|
def self.request_type(query)
|
56
65
|
result = query.downcase.match(/(^(?:drop|select|insert|delete|\\d))/)
|
57
66
|
return unless result
|
@@ -32,13 +32,21 @@ class EnrichmentDb::Geo::Region < EnrichmentDb::DatumModel
|
|
32
32
|
table = make_table_name
|
33
33
|
query = "SELECT #{field_names} FROM #{DATABASE_NAME}.#{table} where ST_Within(ST_SetSRID(ST_GeomFromGeoHash($1), 4283), boundary)"
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
result
|
39
|
-
|
40
|
-
|
41
|
-
|
35
|
+
begin
|
36
|
+
result = EnrichmentDb.request(DATABASE_NAME, query, values)
|
37
|
+
|
38
|
+
if result.ntuples == 1
|
39
|
+
puts "Found #{object_type}"
|
40
|
+
result[0]
|
41
|
+
else
|
42
|
+
puts "Nothing found"
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
rescue PG::InternalError => e
|
46
|
+
# This usually is GEOSContains: TopologyException: side location conflict at #{lat} #{long}
|
47
|
+
LexerAPI.error e.class
|
48
|
+
LexerAPI.error e.message
|
49
|
+
return nil
|
42
50
|
end
|
43
51
|
end
|
44
52
|
|
data/lib/enrichment_db/helper.rb
CHANGED
@@ -10,7 +10,10 @@ class EnrichmentDb::Language::Datum < EnrichmentDb::DatumModel
|
|
10
10
|
end.sort_by do |h|
|
11
11
|
h['value']
|
12
12
|
end.each_with_object({}) do |record, h|
|
13
|
-
h[record.fetch('value')]
|
13
|
+
h[record.fetch('value')] ||= []
|
14
|
+
h[record.fetch('value')] << record.fetch('language')
|
15
|
+
end.each_with_object({}) do |(key, values), h|
|
16
|
+
h[key] = values.join('|')
|
14
17
|
end
|
15
18
|
else
|
16
19
|
puts "Nothing found"
|
data/test/cache_test.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
describe EnrichmentDb::Cache do
|
4
|
+
before do
|
5
|
+
EnrichmentDb::Cache.instance_variable_set(:@query_cache, nil)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should return nil as value hasn\'t been set when no values' do
|
9
|
+
query = 'do stuff'
|
10
|
+
assert_nil EnrichmentDb::Cache.get(query)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should return nil as value hasn\'t been set when non-empty values' do
|
14
|
+
query = 'do stuff'
|
15
|
+
values = ['er']
|
16
|
+
assert_nil EnrichmentDb::Cache.get(query, values)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should set value on cache and get it' do
|
20
|
+
query = 'do stuff'
|
21
|
+
values = ['er']
|
22
|
+
record = 'This here is a gut dang it record'
|
23
|
+
set_result = EnrichmentDb::Cache.set(query, values, record)
|
24
|
+
|
25
|
+
get_result = EnrichmentDb::Cache.set(query, values)
|
26
|
+
|
27
|
+
refute_nil set_result
|
28
|
+
refute_nil get_result
|
29
|
+
assert_equal set_result, get_result
|
30
|
+
end
|
31
|
+
end
|
data/test/datum_test.rb
CHANGED
@@ -3,7 +3,7 @@ require "#{File.dirname(__FILE__)}/test_helper"
|
|
3
3
|
describe EnrichmentDb::Datum do
|
4
4
|
it 'should get correct ato record' do
|
5
5
|
condition = "region_id = '3000'"
|
6
|
-
result = EnrichmentDb::Datum.
|
6
|
+
result = EnrichmentDb::Datum.by_lambda('ato', 'taxable_incomes', condition)
|
7
7
|
region = result.first
|
8
8
|
assert_equal '3000', region['region_id']
|
9
9
|
assert_equal 'Postcodes', region['region_type']
|
data/test/language/datum_test.rb
CHANGED
@@ -9,4 +9,15 @@ describe EnrichmentDb::Language::Datum do
|
|
9
9
|
expecting = 'Acer'
|
10
10
|
assert_equal expecting, test_result
|
11
11
|
end
|
12
|
+
|
13
|
+
it 'should retrieve correct record via a lambda' do
|
14
|
+
table_name = 'location_countries'
|
15
|
+
schema_name = 'bio'
|
16
|
+
value = 'Australia'
|
17
|
+
lambda = "value = '#{value}'"
|
18
|
+
result = EnrichmentDb::Language::Datum.by_lambda(schema_name, table_name, lambda)
|
19
|
+
test_result = result.keys.first
|
20
|
+
expecting = 'Australia'
|
21
|
+
assert_equal expecting, test_result
|
22
|
+
end
|
12
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enrichment_db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Wallis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- lib/enrichment_db.rb
|
70
70
|
- lib/enrichment_db/.DS_Store
|
71
71
|
- lib/enrichment_db/ato/datum.rb
|
72
|
+
- lib/enrichment_db/cache.rb
|
72
73
|
- lib/enrichment_db/census.rb
|
73
74
|
- lib/enrichment_db/census/datum.rb
|
74
75
|
- lib/enrichment_db/datum.rb
|
@@ -88,6 +89,7 @@ files:
|
|
88
89
|
- lib/enrichment_db/language.rb
|
89
90
|
- lib/enrichment_db/language/datum.rb
|
90
91
|
- lib/enrichment_db/version.rb
|
92
|
+
- test/cache_test.rb
|
91
93
|
- test/census/datum_test.rb
|
92
94
|
- test/datum_test.rb
|
93
95
|
- test/db_test.rb
|
@@ -138,6 +140,7 @@ test_files:
|
|
138
140
|
- lib/enrichment_db.rb
|
139
141
|
- lib/enrichment_db/.DS_Store
|
140
142
|
- lib/enrichment_db/ato/datum.rb
|
143
|
+
- lib/enrichment_db/cache.rb
|
141
144
|
- lib/enrichment_db/census.rb
|
142
145
|
- lib/enrichment_db/census/datum.rb
|
143
146
|
- lib/enrichment_db/datum.rb
|
@@ -157,6 +160,7 @@ test_files:
|
|
157
160
|
- lib/enrichment_db/language.rb
|
158
161
|
- lib/enrichment_db/language/datum.rb
|
159
162
|
- lib/enrichment_db/version.rb
|
163
|
+
- test/cache_test.rb
|
160
164
|
- test/census/datum_test.rb
|
161
165
|
- test/datum_test.rb
|
162
166
|
- test/db_test.rb
|