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