Class: Egis::QueryStatus
- Inherits:
-
Object
- Object
- Egis::QueryStatus
- Defined in:
- lib/egis/query_status.rb
Constant Summary collapse
- QUEUED =
:queued
- RUNNING =
:running
- FINISHED =
:finished
- FAILED =
:failed
- CANCELLED =
:cancelled
- STATUSES =
[QUEUED, RUNNING, FINISHED, FAILED, CANCELLED].freeze
Instance Attribute Summary collapse
-
#id ⇒ String
readonly
Athena query execution ID.
- #message ⇒ String readonly
- #output_location ⇒ Egis::OutputLocation readonly
- #status ⇒ :queued, ... readonly
Instance Method Summary collapse
- #cancelled? ⇒ Boolean
- #failed? ⇒ Boolean
-
#fetch_result(schema: []) ⇒ Array
Download query result.
- #finished? ⇒ Boolean
- #in_progress? ⇒ Boolean
-
#initialize(id, status, message, output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) ⇒ QueryStatus
constructor
A new instance of QueryStatus.
- #queued? ⇒ Boolean
- #running? ⇒ Boolean
Constructor Details
#initialize(id, status, message, output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) ⇒ QueryStatus
Returns a new instance of QueryStatus.
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/egis/query_status.rb', line 25 def initialize(id, status, , output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) raise ArgumentError, "Unsupported status #{status}" unless STATUSES.include?(status) @id = id @status = status @message = @output_location = output_location @output_downloader = output_downloader @output_parser = output_parser end |
Instance Attribute Details
#id ⇒ String (readonly)
Returns Athena query execution ID.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/egis/query_status.rb', line 14 class QueryStatus QUEUED = :queued RUNNING = :running FINISHED = :finished FAILED = :failed CANCELLED = :cancelled STATUSES = [QUEUED, RUNNING, FINISHED, FAILED, CANCELLED].freeze attr_reader :id, :status, :message, :output_location def initialize(id, status, , output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) raise ArgumentError, "Unsupported status #{status}" unless STATUSES.include?(status) @id = id @status = status @message = @output_location = output_location @output_downloader = output_downloader @output_parser = output_parser end def finished? status == FINISHED end def failed? status == FAILED end def queued? status == QUEUED end def running? status == RUNNING end def cancelled? status == CANCELLED end def in_progress? [RUNNING, QUEUED].include?(status) end ## # Download query result. # # By default, Egis will just parse output CSV and return array of string arrays. Additionally, you # can pass expected query result column types to parse them into Ruby objects accordingly. # # @param [Array] schema Array with expected query column types # @return [Array] Array of row values def fetch_result(schema: []) output = output_downloader.download(output_location) output_parser.parse(output, schema) end private attr_reader :output_downloader, :output_parser end |
#message ⇒ String (readonly)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/egis/query_status.rb', line 14 class QueryStatus QUEUED = :queued RUNNING = :running FINISHED = :finished FAILED = :failed CANCELLED = :cancelled STATUSES = [QUEUED, RUNNING, FINISHED, FAILED, CANCELLED].freeze attr_reader :id, :status, :message, :output_location def initialize(id, status, , output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) raise ArgumentError, "Unsupported status #{status}" unless STATUSES.include?(status) @id = id @status = status @message = @output_location = output_location @output_downloader = output_downloader @output_parser = output_parser end def finished? status == FINISHED end def failed? status == FAILED end def queued? status == QUEUED end def running? status == RUNNING end def cancelled? status == CANCELLED end def in_progress? [RUNNING, QUEUED].include?(status) end ## # Download query result. # # By default, Egis will just parse output CSV and return array of string arrays. Additionally, you # can pass expected query result column types to parse them into Ruby objects accordingly. # # @param [Array] schema Array with expected query column types # @return [Array] Array of row values def fetch_result(schema: []) output = output_downloader.download(output_location) output_parser.parse(output, schema) end private attr_reader :output_downloader, :output_parser end |
#output_location ⇒ Egis::OutputLocation (readonly)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/egis/query_status.rb', line 14 class QueryStatus QUEUED = :queued RUNNING = :running FINISHED = :finished FAILED = :failed CANCELLED = :cancelled STATUSES = [QUEUED, RUNNING, FINISHED, FAILED, CANCELLED].freeze attr_reader :id, :status, :message, :output_location def initialize(id, status, , output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) raise ArgumentError, "Unsupported status #{status}" unless STATUSES.include?(status) @id = id @status = status @message = @output_location = output_location @output_downloader = output_downloader @output_parser = output_parser end def finished? status == FINISHED end def failed? status == FAILED end def queued? status == QUEUED end def running? status == RUNNING end def cancelled? status == CANCELLED end def in_progress? [RUNNING, QUEUED].include?(status) end ## # Download query result. # # By default, Egis will just parse output CSV and return array of string arrays. Additionally, you # can pass expected query result column types to parse them into Ruby objects accordingly. # # @param [Array] schema Array with expected query column types # @return [Array] Array of row values def fetch_result(schema: []) output = output_downloader.download(output_location) output_parser.parse(output, schema) end private attr_reader :output_downloader, :output_parser end |
#status ⇒ :queued, ... (readonly)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/egis/query_status.rb', line 14 class QueryStatus QUEUED = :queued RUNNING = :running FINISHED = :finished FAILED = :failed CANCELLED = :cancelled STATUSES = [QUEUED, RUNNING, FINISHED, FAILED, CANCELLED].freeze attr_reader :id, :status, :message, :output_location def initialize(id, status, , output_location, client: Egis::Client.new, output_downloader: Egis::OutputDownloader.new(client.aws_s3_client), output_parser: Egis::OutputParser.new) raise ArgumentError, "Unsupported status #{status}" unless STATUSES.include?(status) @id = id @status = status @message = @output_location = output_location @output_downloader = output_downloader @output_parser = output_parser end def finished? status == FINISHED end def failed? status == FAILED end def queued? status == QUEUED end def running? status == RUNNING end def cancelled? status == CANCELLED end def in_progress? [RUNNING, QUEUED].include?(status) end ## # Download query result. # # By default, Egis will just parse output CSV and return array of string arrays. Additionally, you # can pass expected query result column types to parse them into Ruby objects accordingly. # # @param [Array] schema Array with expected query column types # @return [Array] Array of row values def fetch_result(schema: []) output = output_downloader.download(output_location) output_parser.parse(output, schema) end private attr_reader :output_downloader, :output_parser end |
Instance Method Details
#cancelled? ⇒ Boolean
55 56 57 |
# File 'lib/egis/query_status.rb', line 55 def cancelled? status == CANCELLED end |
#failed? ⇒ Boolean
43 44 45 |
# File 'lib/egis/query_status.rb', line 43 def failed? status == FAILED end |
#fetch_result(schema: []) ⇒ Array
Download query result.
By default, Egis will just parse output CSV and return array of string arrays. Additionally, you can pass expected query result column types to parse them into Ruby objects accordingly.
72 73 74 75 |
# File 'lib/egis/query_status.rb', line 72 def fetch_result(schema: []) output = output_downloader.download(output_location) output_parser.parse(output, schema) end |
#finished? ⇒ Boolean
39 40 41 |
# File 'lib/egis/query_status.rb', line 39 def finished? status == FINISHED end |
#in_progress? ⇒ Boolean
59 60 61 |
# File 'lib/egis/query_status.rb', line 59 def in_progress? [RUNNING, QUEUED].include?(status) end |
#queued? ⇒ Boolean
47 48 49 |
# File 'lib/egis/query_status.rb', line 47 def queued? status == QUEUED end |
#running? ⇒ Boolean
51 52 53 |
# File 'lib/egis/query_status.rb', line 51 def running? status == RUNNING end |