lib/abank/big.rb in abank-0.2.5 vs lib/abank/big.rb in abank-0.2.6

- old
+ new

@@ -1,134 +1,136 @@ # frozen_string_literal: true require 'google/cloud/bigquery' -# @see Abank::Big -class Abank::Big - DF = '%Y-%m-%d' +module Abank + # @see Big + class Big + DF = '%Y-%m-%d' - # @return [Hash] opcoes trabalho - attr_reader :opcao + # @return [Hash] opcoes trabalho + attr_reader :opcao - # @return [Google::Cloud::Bigquery] API bigquery - attr_reader :bqapi + # @return [Google::Cloud::Bigquery] API bigquery + attr_reader :bqapi - # @return [Google::Cloud::Bigquery::QueryJob] job bigquery - attr_reader :bqjob + # @return [Google::Cloud::Bigquery::QueryJob] job bigquery + attr_reader :bqjob - # @return [Google::Cloud::Bigquery::Data] resultado do select - attr_reader :bqres + # @return [Google::Cloud::Bigquery::Data] resultado do select + attr_reader :bqres - # @return [Integer] numero linhas afetadas pela Data Manipulation Language (DML) - attr_reader :bqnrs + # @return [Integer] numero linhas afetadas pela Data Manipulation Language (DML) + attr_reader :bqnrs - # @return [String] movimentos a inserir (values.mv) - attr_reader :mvvls + # @return [String] movimentos a inserir (values.mv) + attr_reader :mvvls - # @return [String] movimentos a apagar (keysin.mv) - attr_reader :mvkys + # @return [String] movimentos a apagar (keysin.mv) + attr_reader :mvkys - # acesso a base dados abank no bigquery - # - # @param [Hash] opc opcoes trabalho - # @option opc [String] :k ('') movimentos a apagar (keysin.mv) - # @option opc [String] :c ('') id contrato arrendamento (re) - # @option opc [String] :d ('') data inicio contrato arrendamento (re) - # @option opc [Boolean] :t (false) trabalha todas as rendas? (re) - # @return [Hash] opcoes trabalho - def initialize(opc = {}) - @opcao = opc - @bqapi = Google::Cloud::Bigquery.new - @mvvls = '' - @mvkys = opc.fetch(:k, '') - @ctide = opc.fetch(:c, '') - # p ['B', opcao] - opcao - end + # acesso a base dados abank no bigquery + # + # @param [Hash] opc opcoes trabalho + # @option opc [String] :k ('') movimentos a apagar (keysin.mv) + # @option opc [String] :c ('') id contrato arrendamento (re) + # @option opc [String] :d ('') data inicio contrato arrendamento (re) + # @option opc [Boolean] :t (false) trabalha todas as rendas? (re) + # @return [Hash] opcoes trabalho + def initialize(opc = {}) + @opcao = opc + @bqapi = Google::Cloud::Bigquery.new + @mvvls = '' + @mvkys = opc.fetch(:k, '') + @ctide = opc.fetch(:c, '') + # p ['B', opcao] + opcao + end - # (see CLI#tag) - def mv_classifica - dml('update hernanilr.ab.mv set mv.ct=tt.nct ' \ - 'from (select * from hernanilr.ab.cl) as tt ' \ - "where #{ky_mv}=tt.ky") - puts 'MOVIMENTOS CLASSIFICADOS ' + bqnrs.to_s - end + # (see CLI#tag) + def mv_classifica + dml('update hernanilr.ab.mv set mv.ct=tt.nct ' \ + 'from (select * from hernanilr.ab.cl) as tt ' \ + "where #{ky_mv}=tt.ky") + puts 'MOVIMENTOS CLASSIFICADOS ' + bqnrs.to_s + end - # apaga movimentos & suas rendas associadas no bigquery - # - # @return [Big] acesso a base dados abank no bigquery - def mv_delete - vars_mv_work - if mvkys.size.positive? - # obtem lista contratos arrendamento associados aos movimentos a apagar - @ctlct = sel("select ct from hernanilr.ab.mv where #{ky_mv} in(#{mvkys}) and substr(ct,1,1)='r' group by 1") + # apaga movimentos & suas rendas associadas no bigquery + # + # @return [Big] acesso a base dados abank no bigquery + def mv_delete + vars_mv_work + if mvkys.size.positive? + # obtem lista contratos arrendamento associados aos movimentos a apagar + @ctlct = sel("select ct from hernanilr.ab.mv where #{ky_mv} in(#{mvkys}) and substr(ct,1,1)='r' group by 1") - # apaga rendas associadas e depois movimentos - @opcao[:t] = true - lr_apaga.mv_delete_dml + # apaga rendas associadas e depois movimentos + @opcao[:t] = true + lr_apaga.mv_delete_dml - # para obrigar re_work a trabalhar com lista contratos (ctlct) - @bqnrs = 0 + # para obrigar re_work a trabalhar com lista contratos (ctlct) + @bqnrs = 0 + end + self end - self - end - # insere & classifica movimentos no bigquery - # - # @return [Big] acesso a base dados abank no bigquery - def mv_insert - if mvvls.size.positive? - dml('insert hernanilr.ab.mv VALUES' + mvvls) - puts 'MOVIMENTOS INSERIDOS ' + bqnrs.to_s - mv_classifica if bqnrs.positive? + # insere & classifica movimentos no bigquery + # + # @return [Big] acesso a base dados abank no bigquery + def mv_insert + if mvvls.size.positive? + dml('insert hernanilr.ab.mv VALUES' + mvvls) + puts 'MOVIMENTOS INSERIDOS ' + bqnrs.to_s + mv_classifica if bqnrs.positive? + end + self end - self - end - # inicializa variaveis para delete/insert movimentos - def vars_mv_work - @bqnrs = 0 - @ctlct = [] - @mvkys = mvkys[1..] if mvkys[0] == ',' - @mvvls = mvvls[1..] if mvvls[0] == ',' - end + # inicializa variaveis para delete/insert movimentos + def vars_mv_work + @bqnrs = 0 + @ctlct = [] + @mvkys = mvkys[1..] if mvkys[0] == ',' + @mvvls = mvvls[1..] if mvvls[0] == ',' + end - # apaga movimentos no bigquery - def mv_delete_dml - dml("delete from hernanilr.ab.mv where #{ky_mv} in(#{mvkys})") - puts 'MOVIMENTOS APAGADOS ' + bqnrs.to_s - end + # apaga movimentos no bigquery + def mv_delete_dml + dml("delete from hernanilr.ab.mv where #{ky_mv} in(#{mvkys})") + puts 'MOVIMENTOS APAGADOS ' + bqnrs.to_s + end - # @return [String] expressao sql da chave de movimentos - def ky_mv - 'FARM_FINGERPRINT(CONCAT(CAST(mv.nc as STRING),mv.ds,CAST(mv.dl as STRING),CAST(mv.vl as STRING)))' - end + # @return [String] expressao sql da chave de movimentos + def ky_mv + 'FARM_FINGERPRINT(CONCAT(CAST(mv.nc as STRING),mv.ds,CAST(mv.dl as STRING),CAST(mv.vl as STRING)))' + end - # cria job bigquery & verifica execucao - # - # @param [String] sql comando a executar - # @return [Boolean] job ok? - def job?(sql) - # p sql - @bqjob = bqapi.query_job(sql) - @bqjob.wait_until_done! - puts @bqjob.error['message'] if @bqjob.failed? - @bqjob.failed? - end + # cria job bigquery & verifica execucao + # + # @param [String] sql comando a executar + # @return [Boolean] job ok? + def job?(sql) + # p sql + @bqjob = bqapi.query_job(sql) + @bqjob.wait_until_done! + puts @bqjob.error['message'] if @bqjob.failed? + @bqjob.failed? + end - # executa sql & devolve resultado do bigquery - # - # @param (see job?) - # @param [Array] erro quando da erro no bigquery - # @return [Google::Cloud::Bigquery::Data] resultado do sql - def sel(sql, erro = []) - @bqres = job?(sql) ? erro : bqjob.data - end + # executa sql & devolve resultado do bigquery + # + # @param (see job?) + # @param [Array] erro quando da erro no bigquery + # @return [Google::Cloud::Bigquery::Data] resultado do sql + def sel(sql, erro = []) + @bqres = job?(sql) ? erro : bqjob.data + end - # executa Data Manipulation Language (DML) no bigquery - # - # @param (see job?) - # @return [Integer] numero rows afetadas pelo dml - def dml(sql) - @bqnrs = job?(sql) ? 0 : bqjob.num_dml_affected_rows + # executa Data Manipulation Language (DML) no bigquery + # + # @param (see job?) + # @return [Integer] numero rows afetadas pelo dml + def dml(sql) + @bqnrs = job?(sql) ? 0 : bqjob.num_dml_affected_rows + end end end