frankfurter/lib/rate.rb

26 lines
505 B
Ruby
Raw Normal View History

2026-05-21 01:38:14 -06:00
# frozen_string_literal: true
require "bucket"
require "db"
require "rate_scopes"
class Rate < Sequel::Model(:rates)
include RateScopes
class << self
def date_column = :date
end
dataset_module do
def downsample(precision)
sampler = Bucket.expression(precision)
select(:base, :provider, :quote)
.select_append { avg(rate).as(rate) }
.select_append(sampler.as(:date))
.group(:base, :provider, :quote, sampler)
.order(:date)
end
end
end