Module: EnrichmentDb
- Defined in:
- lib/enrichment_db.rb,
lib/enrichment_db/db.rb,
lib/enrichment_db/error.rb,
lib/enrichment_db/version.rb
Defined Under Namespace
Modules: Ato, Census, Geo, Helper, Language
Classes: Datum, DatumModel
Constant Summary
collapse
- Error =
Class.new(StandardError)
- RequestError =
Class.new(Error)
- InvalidObject =
Class.new(Error)
- InvalidGeoPointFormat =
Class.new(Error)
- VERSION =
'0.1.14'
Class Method Summary
collapse
Class Method Details
.db_connection ⇒ Object
6
7
8
9
10
11
12
13
|
# File 'lib/enrichment_db/db.rb', line 6
def self.db_connection
@__db_connection ||= PGconn.connect(
host: 'geo-mappings.cfmmyp7uix0j.ap-southeast-2.rds.amazonaws.com',
dbname: 'geo',
user: 'lexer',
password: 'campl3x3r'
)
end
|
.request(db, query, values = nil) ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/enrichment_db/db.rb', line 39
def self.request(db, query, values = nil)
type = request_type(query)
case type
when :select, 'select', '\d'
return EnrichmentDb::db_connection.exec(query, values) if values
EnrichmentDb::db_connection.exec(query)
when :insert, :drop, :delete, 'insert', 'drop', 'delete'
fail EnrichmentDb::RequestError, "Postgres method '#{type}' is unsupported"
else
fail EnrichmentDb::RequestError, "Postgres query '#{query}' is unsupported"
end
end
|
.request_type(query) ⇒ Object
54
55
56
57
58
59
|
# File 'lib/enrichment_db/db.rb', line 54
def self.request_type(query)
result = query.downcase.match(/(^(?:drop|select|insert|delete|\\d))/)
return unless result
result[0]
end
|
.reset_connection ⇒ Object
15
16
17
|
# File 'lib/enrichment_db/db.rb', line 15
def self.reset_connection
@__api_connection = nil
end
|
.table_columns(table, schema = 'public') ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/enrichment_db/db.rb', line 29
def self.table_columns(table, schema = 'public')
query = "SELECT *
FROM information_schema.columns
WHERE table_schema = '#{schema}'
AND table_name = '#{table}'"
request(schema, query).collect do |h|
h['column_name']
end
end
|
.table_names(schema = 'public') ⇒ Object
19
20
21
22
23
24
25
26
27
|
# File 'lib/enrichment_db/db.rb', line 19
def self.table_names(schema = 'public')
query = "SELECT table_name
FROM information_schema.tables
WHERE table_schema='#{schema}'
AND table_type='BASE TABLE'"
request(schema, query).collect do |h|
h['table_name']
end
end
|