class SepaClearer::Clearer

Constants

ATTRIBUTES

Make sure we always have the correct order of columns

Attributes

db[RW]

Public Class Methods

new(db_name = 'deutsche_bundesbank') click to toggle source
# File lib/sepa_clearer/clearer.rb, line 10
def initialize(db_name = 'deutsche_bundesbank')
  self.db = SQLite3::Database.new File.join(File.dirname(__FILE__), '../..', "data/#{db_name}.db")
end

Public Instance Methods

add(provider) click to toggle source
# File lib/sepa_clearer/clearer.rb, line 14
def add(provider)
  data = boolean_to_integers(provider.to_a)
  db.execute "INSERT INTO payment_providers (#{ATTRIBUTES.join(',')}) VALUES (?, ?, ?, ?, ?, ?)", data
end
all() click to toggle source
# File lib/sepa_clearer/clearer.rb, line 19
def all
  db.execute("SELECT #{ATTRIBUTES.join(',')} FROM payment_providers ORDER BY name").map do |row|
    PaymentProvider.new(hash_from_result(row))
  end
end
delete() click to toggle source
# File lib/sepa_clearer/clearer.rb, line 31
def delete
  db.execute("DELETE FROM payment_providers").first
end
find_by_bic(bic) click to toggle source
# File lib/sepa_clearer/clearer.rb, line 25
def find_by_bic(bic)
  db.execute("SELECT #{ATTRIBUTES.join(',')} FROM payment_providers WHERE bic = ?", normalize_bic(bic)).map do |row|
    PaymentProvider.new(hash_from_result(row))
  end.first
end
normalize_bic(bic) click to toggle source
# File lib/sepa_clearer/clearer.rb, line 35
def normalize_bic(bic)
  bic.to_s.ljust(11, 'X').upcase
end

Protected Instance Methods

boolean_to_integers(array) click to toggle source
# File lib/sepa_clearer/clearer.rb, line 46
def boolean_to_integers(array)
  array.map do |element|
    if element.kind_of?(TrueClass) || element.kind_of?(FalseClass)
      element ? 1 : 0
    else
      element
    end
  end
end
hash_from_result(raw_array) click to toggle source
# File lib/sepa_clearer/clearer.rb, line 41
def hash_from_result(raw_array)
  raw_array_with_boolean = integers_to_boolean(raw_array)
  Hash[ATTRIBUTES.zip(raw_array_with_boolean)]
end
integers_to_boolean(array) click to toggle source
# File lib/sepa_clearer/clearer.rb, line 56
def integers_to_boolean(array)
  array.map do |element|
    if element.kind_of?(Integer)
      element == 1
    else
      element
    end
  end
end