module EnrichmentDb

Constants

Error
InvalidGeoPointFormat
InvalidObject
RequestError
VERSION

Public Class Methods

db_connection() click to toggle source
# File lib/enrichment_db/db.rb, line 5
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) click to toggle source
# File lib/enrichment_db/db.rb, line 38
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) click to toggle source
# File lib/enrichment_db/db.rb, line 53
def self.request_type(query)
  result = query.downcase.match(/(^(?:drop|select|insert|delete|\\d))/)
  return unless result

  result[0]
end
reset_connection() click to toggle source
# File lib/enrichment_db/db.rb, line 14
def self.reset_connection
  @__api_connection = nil
end
table_columns(table, schema = 'public') click to toggle source
# File lib/enrichment_db/db.rb, line 28
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') click to toggle source
# File lib/enrichment_db/db.rb, line 18
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