Sha256: e69ddde8e995f7b0576c51c2caa07030a505b7afe8b629ce2855e0966576ee32
Contents?: true
Size: 2 KB
Versions: 1
Compression:
Stored size: 2 KB
Contents
module Quandl::Cassinatra::Dataset::Searchable extend ActiveSupport::Concern module ClassMethods def search_scopes @search_scopes ||+ search_scope.scopes.keys end end included do scope.class_eval do delegate :each, :collect, :to_a, :to_h, :count, :inspect, :[], to: :to_table, allow_nil: true delegate *Quandl::Data::Table.forwardable_methods, to: :to_table, allow_nil: true end scope_helper :to_table, -> { fetch_once.data } scope :row, ->(v) { where( row: v.to_i ) } scope :limit, ->(v) { where( limit: v.to_i ) } scope :offset, ->(v) { where( offset: v.to_i ) } scope :accuracy, ->(v) { where( accuracy: v.to_i ) } scope :column, ->(v) { where( column: v.to_i ) } scope :order, ->(dir) { where( order: (dir.to_sym == :asc) ? 'asc' : 'desc' ) } scope :trim_start, ->(date) { where( trim_start: format_trim_date(date, :start)) } scope :trim_end, ->(date) { where( trim_end: format_trim_date(date, :end)) } scope :with_id, ->(value) { where( id: value.to_i )} scope :transform, ->(value) { where( transform: value.to_sym ) if Quandl::Operation::Transform.valid_transformation?( value.try(:to_sym) ) } scope :collapse, ->(value){ # set collapse where( collapse: value ) if Quandl::Operation::Collapse.valid_collapse?( value.try(:to_sym) ) # reset trims to force them to edge of frequency trim_start(trim_start) if trim_start trim_end(trim_end) if trim_end } end def data return read_data if data? return scope unless queried? nil end def data=(value) write_data(value) end def scope @scope ||= self.class.scope.new.references( self ) end protected def read_data Quandl::Data::Table.new( read_attribute(:data) ) end def write_data(value ) write_attribute(:data, Quandl::Data::Table.new(value).to_csv ) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
quandl_cassinatra-0.2.3 | lib/quandl/cassinatra/models/dataset/searchable.rb |