Module: Sequel::CurrencyRates

Defined in:
lib/sequel/extensions/currency_rates.rb

Overview

Extension for currency-conversion via currency_rates table

Instance Method Summary collapse

Instance Method Details

#table_name ⇒ Symbol

Returns a table name

Returns:

  • (Symbol) —

    table name



31
32
33
# File 'lib/sequel/extensions/currency_rates.rb', line 31

def table_name
  respond_to?(:first_source_alias) ? first_source_alias : super
end

#with_rates(aliaz = :currency_rates, table: table_name, rates_table: Sequel[:currency_rates], time_column: :created_at) ⇒ Sequel::Dataset

Join a rates table

Examples:

Order::Model.with_rates.select(Sequel[:amount].in_usd)

Parameters:

  • aliaz (Symbol) (defaults to: :currency_rates) —

    alias to be used for joined table

  • table (Symbol) (defaults to: table_name) —

    table name to join to

  • time_column (Symbol) (defaults to: :created_at) —

    time column by which table is joined

Returns:

  • (Sequel::Dataset) —

    dataset



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sequel/extensions/currency_rates.rb', line 15

def with_rates(
  aliaz = :currency_rates,
  table: table_name,
  rates_table: Sequel[:currency_rates],
  time_column: :created_at
)
  table = Sequel[table]
  rates = Sequel[aliaz]
  join_expr = table[:currency] =~ rates[:currency]
  join_expr &= rates[:period].pg_range.contains(table[time_column])
  left_join(rates_table.as(aliaz), join_expr)
end