class CacheBuilder
  def self.upc_display_upc(sql)
    res = sql[:cache_upc_display_upc].execute
    res.each_with_object({}) do | r, cache |
      cache[r['display_upc'].to_s] = r['upc'].to_s
    end
  end

  def self.open_and_current_periods(sql)
    res = sql[:cache_open_current_periods].execute
    res.each_with_object([]) do | r, cache |
      cache << r['statement_period_id']
    end
  end


  def self.cache_statement_period_ids(sql)
    res = sql[:cache_period_ids].execute
    res.each_with_object({}) do | r, cache |
      key = "#{r['statement_month']}|#{r['statement_year']}"
      cache[key] = r['statement_period_id'].to_i
    end
  end


  def self.cache_adjustment_type_ids(sql)
    res = sql[:cache_adjustment_type_ids].execute
    res.each_with_object({}) do | r, cache |
      cache[r['type_name']] = r['reference_adjustment_type_id']
    end
  end

  def self.cache_contract_products_terms(sql)
    res = sql[:cache_contract_attachments].execute('product')
    res.each_with_object({}) do | r, cache |
      unless cache.has_key?(r['contract_id'])
        cache[r['contract_id']] = []
      end

      cache[r['contract_id']] << r['attachments'].gsub('[', '').gsub(']', '').gsub(' "', '').gsub('"', '').split(',')
      cache[r['contract_id']].flatten!
    end
  end

  def self.cache_accounts(sql)
    res = sql[:cache_account].execute
    res.each_with_object({}) do | r, cache |
      cache[r['account_id']] = r['account_id']
    end
  end

  def self.cache_account_contracts(sql)
    res = sql[:cache_account_contract].execute
    res.each_with_object({}) do | r, cache |
      key = "#{r['account_id']}|#{r['contract_id']}"
      cache[key] = r['contract_id']
    end
  end

  def self.cache_contract_labels_terms(sql)
    res = sql[:cache_contract_attachments].execute('label')

    res.each_with_object({}) do | r, cache |
      unless cache.has_key?(r['contract_id'])
        cache[r['contract_id']] = []
      end

      cache[r['contract_id']] << r['attachments'].gsub('[', '').gsub(']', '').gsub(' "', '').gsub('"', '').split(',')
      cache[r['contract_id']].flatten!
    end
  end
end


