module Sequel::CurrencyRates
Extension for currency-conversion via currency_rates table
Public Instance Methods
table_name()
click to toggle source
Returns a table name
@return [Symbol] table name
Calls superclass method
# File lib/sequel/extensions/currency_rates.rb, line 37 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], currency_column: :currency, time_column: :created_at )
click to toggle source
Join a rates table
@param aliaz [Symbol] alias to be used for joined table @param table [Symbol] table name to join to @param currency_column [Symbol or Sequel::SQL::Expression] currency column by which
table is joined
@param time_column [Symbol or Sequel::SQL::Expression] time column by which table is joined
@example
Order::Model.with_rates.select(Sequel[:amount].in_usd)
@return [Sequel::Dataset] dataset
# File lib/sequel/extensions/currency_rates.rb, line 17 def with_rates( aliaz = :currency_rates, table: table_name, rates_table: Sequel[:currency_rates], currency_column: :currency, time_column: :created_at ) table = Sequel[table] rates = Sequel[aliaz] currency_expr = wrap_if_symbol(currency_column, table) time_expr = wrap_if_symbol(time_column, table) join_expr = (rates[:currency] =~ currency_expr) & rates[:period].pg_range.contains(time_expr) left_join(rates_table.as(aliaz), join_expr) end
Private Instance Methods
wrap_if_symbol(column_name, table)
click to toggle source
# File lib/sequel/extensions/currency_rates.rb, line 43 def wrap_if_symbol(column_name, table) column_name.is_a?(Symbol) ? table[column_name] : column_name end