# frozen_string_literal: true module Eost HT = %w[block_num block_time contract action from to amount symbol memo data].freeze R1 = '%-12.12s %s %-12.12s %-12.12s' R2 = '%10.5f %-10.10s' # folhas calculo comuns no bigquery class Bigquery # @return [String] linha folha calculo formatada def row_str "#{row[0]} #{DateTime.parse(row[1]).strftime(DF)} " + row_r1 + row_r2 end # @return [String] linha folha calculo formatada def row_r1 format(R1, v3: row[2], v4: row[3], v5: row[4], v6: row[5]) end # @return [String] linha folha calculo formatada def row_r2 format(R2, v7: row[6], v8: row[7]) end # processa linhas folha calculo def processa n = 0 # usada somente a primeira sheet book.sheet(0).parse(header_search: HT) do |r| n += 1 puts n == 1 ? "\n" + book.info : processa_row(r) end end # mostra linhas folha calculo def show n = 0 # usada somente a primeira sheet book.sheet(0).parse(header_search: HT) do |r| n += 1 puts n == 1 ? "\n" + book.info : show_row(r) end end # processa linha folha calculo para arquivo # # @param (see show_row) # @return [String] linha folha calculo processada def processa_row(has) @row = has.values sql_select if rnaoexiste? then row_str + (sql_insert == 1 ? ' NOVA' : ' ERRO') elsif rexiste? then row_existente end end # obtem linha folha calculo para apresentacao # # @param [Hash] has da linha em processamento # @return (see row_str) def show_row(has) @row = has.values row_str end # @return [String] linha folha calculo existente def row_existente d = apaga ? sql_delete : 0 row_str + " EXISTENTE#{d.zero? ? '' : ' APAGADA'}" end # @return [Boolean] linha folha calculo nao existe no bigquery? def rnaoexiste? sql.count.zero? end # @return [Boolean] linha folha calculo existe no bigquery? def rexiste? sql.count == 1 end end end