Class: QueueryClient::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/queuery_client/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



3
4
5
# File 'lib/queuery_client/client.rb', line 3

def initialize(options = {})
  @options = options
end

Instance Method Details

#default_optionsObject



57
58
59
# File 'lib/queuery_client/client.rb', line 57

def default_options
  QueueryClient.configuration
end

#execute_query(select_stmt, values) ⇒ Object



7
8
9
# File 'lib/queuery_client/client.rb', line 7

def execute_query(select_stmt, values)
  garage_client.post("/v1/queries", q: select_stmt, values: values)
end

#garage_clientObject



44
45
46
47
48
49
50
51
# File 'lib/queuery_client/client.rb', line 44

def garage_client
  @garage_client ||= BasicAuthGarageClient.new(
    endpoint: options.endpoint,
    path_prefix: '/',
    login: options.token,
    password: options.token_secret
  )
end

#get_query(id) ⇒ Object



11
12
13
# File 'lib/queuery_client/client.rb', line 11

def get_query(id)
  garage_client.get("/v1/queries/#{id}", fields: '__default__,s3_prefix')
end

#optionsObject



53
54
55
# File 'lib/queuery_client/client.rb', line 53

def options
  default_options.merge(@options)
end

#query(select_stmt, values) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/queuery_client/client.rb', line 31

def query(select_stmt, values)
  query = query_and_wait(select_stmt, values)
  case query.status
  when 'success'
    UrlDataFileBundle.new(
      query.data_file_urls,
      s3_prefix: query.s3_prefix,
    )
  when 'failed'
    raise QueryError.new(query.error)
  end
end

#query_and_wait(select_stmt, values) ⇒ Object



26
27
28
29
# File 'lib/queuery_client/client.rb', line 26

def query_and_wait(select_stmt, values)
  query = execute_query(select_stmt, values)
  wait_for(query.id)
end

#wait_for(id) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/queuery_client/client.rb', line 15

def wait_for(id)
  loop do
    query = get_query(id)
    case query.status
    when 'success', 'failed'
      return query
    end
    sleep 3
  end
end