# frozen_string_literal: true class Day < Sequel::Model dataset_module do def latest(date = Date.today) where(date: select(:date).where(Sequel.lit("date <= ?", date)) .order(Sequel.desc(:date)) .limit(1)) end def between(interval) where(date: interval) end def currencies select( :date, Sequel.lit("rates.key").as(:iso_code), Sequel.lit("rates.value::text::float").as(:rate), ) .join(Sequel.function(:jsonb_each, :rates).lateral.as(:rates), true) end end end