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