# frozen_string_literal: true require 'belly_wash/driver/redis' require 'belly_wash/mixins/packer' require 'belly_wash/nocturnal' require 'belly_wash/client' require 'belly_wash/configuration' require 'belly_wash/resource' require 'belly_wash/version' module BellyWash class Error < StandardError; end def self.config @config ||= Configuration.new end def self.configure yield(config) config end def self.client @client ||= Client.new end def self.track(key:, at:, values:) config.ranges.map do |range| Resource.new( key: key, range: range, at: Nocturnal.new(at).send("beginning_of_#{range}") ).increment(**values) end end def self.values_for(key:, from:, to:, range:) Nocturnal.timeline(from: from, to: to, range: range).map do |at| Resource.new(key: key, range: range, at: at).values end end end