lib/trifle/stats/driver/README.md in trifle-stats-0.1.0 vs lib/trifle/stats/driver/README.md in trifle-stats-0.2.0

- old
+ new

@@ -1,59 +1,11 @@ # Driver Driver is a wrapper class that persists and retrieves values from backend. It needs to implement: -- `inc(key:, **values)` method to store values + +- `inc(key:, **values)` method add values +- `set(key:, **values)` method set values - `get(key:)` method to retrieve values -## Packer Mixin +## Documentation -Some databases cannot store nested hashes/values. Or they cannot perform increment on nested values that does not exist. For this reason you can use Packer mixin that helps you convert values to dot notation. - -```ruby -class Sample - include Trifle::Stats::Mixins::Packer -end - -values = { a: 1, b: { c: 22, d: 33 } } -=> {:a=>1, :b=>{:c=>22, :d=>33}} - -packed = Sample.pack(hash: values) -=> {"a"=>1, "b.c"=>22, "b.d"=>33} - -Sample.unpack(hash: packed) -=> {"a"=>1, "b"=>{"c"=>22, "d"=>33}} -``` - -## Dummy driver - -Sample of using custom driver that does, well, nothing useful. - -```ruby -irb(main):001:1* class Dummy -irb(main):002:2* def inc(key:, **values) -irb(main):003:2* puts "Dumping #{key} => #{values}" -irb(main):004:1* end -irb(main):005:2* def get(key:) -irb(main):006:2* puts "Random for #{key}" -irb(main):007:2* { count: rand(1000) } -irb(main):008:1* end -irb(main):009:0> end -=> :get - -irb(main):010:0> c = Trifle::Stats::Configuration.new -=> #<Trifle::Stats::Configuration:0x00007fe179aed848 @separator="::", @ranges=[:minute, :hour, :day, :week, :month, :quarter, :year], @beginning_of_week=:monday, @time_zone="GMT"> - -irb(main):011:0> c.driver = Dummy.new -=> #<Dummy:0x00007fe176302ac8> - -irb(main):012:0> c.track_ranges = [:minute, :hour] -=> [:minute, :hour] - -irb(main):013:0> Trifle::Stats.track(key: 'sample', at: Time.now, values: {count: 1}, config: c) -Dumping sample::minute::1611696240 => {:count=>1} -Dumping sample::hour::1611694800 => {:count=>1} -=> [{2021-01-26 21:24:00 +0000=>{:count=>1}}, {2021-01-26 21:00:00 +0000=>{:count=>1}}] - -irb(main):014:0> Trifle::Stats.values(key: 'sample', from: Time.now, to: Time.now, range: :hour, config: c) -Random for sample::hour::1611694800 -=> [{2021-01-26 21:00:00 +0000=>{:count=>405}}] -``` +For more details about Drivers, please refer to https://trifle.io/docs/stats/drivers