class SCB::DB::Table

Attributes

api[RW]
name[R]

Public Class Methods

new(name, api = nil) click to toggle source
# File lib/scb/db/table.rb, line 11
def initialize(name, api = nil)
  @name = name
  @api  = api || SCB.api
end

Public Instance Methods

codes() click to toggle source
# File lib/scb/db/table.rb, line 54
def codes
  variables.map(&:code)
end
data() click to toggle source
# File lib/scb/db/table.rb, line 70
def data
  @data ||= api.get_and_parse(name) || []
end
inspect() click to toggle source
# File lib/scb/db/table.rb, line 66
def inspect
  name
end
json_query(search_query = {}) click to toggle source
# File lib/scb/db/table.rb, line 20
def json_query(search_query = {})
  body = post_query(search_query, "json")
  api.load_json(body) unless body.nil?
end
png_query(simple_query, filter = "item") click to toggle source
# File lib/scb/db/table.rb, line 25
def png_query(simple_query, filter = "item")
  post_query parse_simple_query(simple_query, filter), "png"
end
post_query(search_query, format = "json") click to toggle source
# File lib/scb/db/table.rb, line 29
def post_query(search_query, format = "json")
  api_post(name, {
    query: search_query,
    response: {
      format: format
    }
  })
rescue SCB::HTTP::Exception
  raise SCB::DB::InvalidQuery, "Invalid query"
end
query(simple_query, filter = "item") click to toggle source
# File lib/scb/db/table.rb, line 16
def query(simple_query, filter = "item")
  json_query parse_simple_query(simple_query, filter)
end
title() click to toggle source
# File lib/scb/db/table.rb, line 40
def title
  data['title']
end
uri() click to toggle source
# File lib/scb/db/table.rb, line 44
def uri
  api_uri
end
variables(klass = Variable) click to toggle source
# File lib/scb/db/table.rb, line 48
def variables(klass = Variable)
  @variables ||= data['variables'].map do |v|
    klass.new(v)
  end
end
write_png_query(filename, simple_query, filter = "item") click to toggle source
# File lib/scb/db/table.rb, line 58
def write_png_query(filename, simple_query, filter = "item")
  write_file filename, png_query(simple_query, filter)
end
write_png_query_raw(filename, search_query) click to toggle source
# File lib/scb/db/table.rb, line 62
def write_png_query_raw(filename, search_query)
  write_file filename, post_query(search_query, "png")
end

Private Instance Methods

api_post(name, search_query) click to toggle source
# File lib/scb/db/table.rb, line 80
def api_post(name, search_query)
  api.post(name, search_query)
end
api_uri() click to toggle source
# File lib/scb/db/table.rb, line 76
def api_uri
  api.uri(name)
end
parse_simple_query(simple_query, filter) click to toggle source
# File lib/scb/db/table.rb, line 92
def parse_simple_query(simple_query, filter)
  simple_query.map do |q|
    {
      code: q[0].to_s,
      selection: {
        filter: filter,
        values: Array(q[1]).map(&:to_s)
      }
    }
  end
end
write_file(filename, data) click to toggle source
# File lib/scb/db/table.rb, line 84
def write_file(filename, data)
  unless File.exist?(filename)
    File.open(filename, 'wb') do |f|
      f.write data
    end
  end
end