mongoid-report 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWE5MWVmMDI4MjY5MmE1MjNkZDUyNzMxZDVjOWNmMDljNWFjY2U0OQ==
4
+ ZjZhMmQ5YzU0ZWUwYzFjMjY2NjUyNjE0ZWFkMWM1ZWUzMzhhNjM2Mg==
5
5
  data.tar.gz: !binary |-
6
- MDZmNTg3OTJlMzcwZGNhMmVmYTVjNDY1OWNhMDBiYzllMDE4MTQ4OA==
6
+ ODI3YTVkMTNjNjlhYzhhOGNlZTI1NjYwOWE0YjAzYzY0OTQ1ZmViYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjMzOTZhMWVkYzMxNTM4NTIzZjE5NGJkMWI1NTY5NmI5NDcyZjhmYTQyNTg2
10
- MjNmMjlkOWJjZTEwMDcyOGJhMGU3NmZhZGZjZWExMDExNjZhNDY2NDhjMzZj
11
- Y2ExOTY3ZmMzMmE0NzgwM2YzNTA3OTgzNjAzMzhmOTRkYjExMWQ=
9
+ NzBjM2VhYzBiN2JhMzc4ZjliYWYyNDFjNmE0MDY0ZTNlM2QyYTUxYjZjYmI3
10
+ YWU0YTA4OTgxMmQyZGZjM2VlZWMyMzhmZDMxZTk1ZTg2OWU3YWFiZWJhMGFi
11
+ MjA0MTg5MTNlZDUxMmNjZTVlNmYzMjg2NGZjODJkNDc4OTY1MTI=
12
12
  data.tar.gz: !binary |-
13
- ZWU3NDBmYjlkMTZjOWRlZDE5NzI5Yjg1Nzk5N2Q2ODkxYzVkMTI0NTJkYzZk
14
- MTg3MjhiZGI2ZTMzODZiODBiMWJlNDk2YWY3NDJjYTIzZjRmOThlNGU5OTRm
15
- MjlkZDk1MWMzOGM4NTI0NWVkNjA4ZDUyY2VmOTIyNDRlNGIwNzQ=
13
+ MjAyOWVkNmNjNGQ2ZjAyMTQyMzYzYzE0ZDVlNzdmZDMzMWE5NjU4NDgyNDli
14
+ Y2UzYWJkNTQ4NmQzZTMyNWM0MWU3MjMyOGE1ZjM5OGUzYjgwM2E0OGY4MDBm
15
+ MWQ4OWY2YTg4N2FiYmM3NjljMzQ0NjVjMTc3MDEyYTllMjEwOWM=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mongoid-report (0.0.5)
4
+ mongoid-report (0.0.6)
5
5
  mongoid (> 3.0.1)
6
6
 
7
7
  GEM
@@ -51,21 +51,21 @@ module Mongoid
51
51
  end
52
52
 
53
53
  module ClassMethods
54
- def attach_to(collection, &block)
55
- proxy = AttachProxy.new(self, collection)
54
+ def attach_to(collection, options = {}, &block)
55
+ proxy = AttachProxy.new(self, collection, options)
56
56
  proxy.instance_eval(&block)
57
57
  end
58
58
 
59
59
  def group_by(*fields)
60
- define_report_method(*fields) do |groups, collection|
61
- settings[collection][:group_by] = groups
60
+ define_report_method(*fields) do |groups, report_name|
61
+ settings[report_name][:group_by] = groups
62
62
  end
63
63
  end
64
64
 
65
65
  def aggregation_field(*fields)
66
- define_report_method(*fields) do |columns, collection|
66
+ define_report_method(*fields) do |columns, report_name|
67
67
  columns.each do |column|
68
- add_field(collection, column)
68
+ add_field(report_name, column)
69
69
  end
70
70
  end
71
71
  end
@@ -86,16 +86,20 @@ module Mongoid
86
86
  # We should always specify model to attach fields, groups
87
87
  collection = options.fetch(:for)
88
88
 
89
+ # If user didn't pass as option to name the report we are using
90
+ # collection class as key for settings.
91
+ report_name = options.fetch(:as) { collection }
92
+
89
93
  # We should always have for option
90
- initialize_settings_by(collection)
94
+ initialize_settings_by(report_name)
91
95
 
92
96
  # Because of modifying fields(usign exract options method of
93
97
  # ActiveSupport) lets pass fields to the next block with collection.
94
- yield fields, collection
98
+ yield fields, report_name
95
99
  end
96
100
 
97
- def initialize_settings_by(collection)
98
- settings[collection] ||= settings.fetch(collection) do
101
+ def initialize_settings_by(report_name)
102
+ settings[report_name] ||= settings.fetch(report_name) do
99
103
  {
100
104
  fields: [],
101
105
  group_by: [],
@@ -103,8 +107,8 @@ module Mongoid
103
107
  end
104
108
  end
105
109
 
106
- def add_field(collection, field)
107
- settings[collection][:fields] << field
110
+ def add_field(report_name, field)
111
+ settings[report_name][:fields] << field
108
112
 
109
113
  class_eval <<-FIELD
110
114
  def #{field}
@@ -1,13 +1,13 @@
1
1
  module Mongoid
2
2
  module Report
3
3
 
4
- AttachProxy = Struct.new(:context, :collection) do
4
+ AttachProxy = Struct.new(:context, :collection, :options) do
5
5
  def aggregation_field(*fields)
6
- context.aggregation_field(*fields, for: collection)
6
+ context.aggregation_field(*fields, options.merge(for: collection))
7
7
  end
8
8
 
9
9
  def group_by(*fields)
10
- context.group_by(*fields, for: collection)
10
+ context.group_by(*fields, options.merge(for: collection))
11
11
  end
12
12
  end
13
13
 
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Report
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
@@ -55,4 +55,18 @@ describe Mongoid::Report do
55
55
  end
56
56
  end
57
57
 
58
+ class Report6
59
+ include Mongoid::Report
60
+
61
+ attach_to Model, as: 'example1' do
62
+ aggregation_field :field1
63
+ end
64
+ end
65
+
66
+ describe '.as' do
67
+ it 'creates settings with "as" name' do
68
+ expect(Report6.settings).to have_key('example1')
69
+ end
70
+ end
71
+
58
72
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-report
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandr Korsak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-11 00:00:00.000000000 Z
11
+ date: 2014-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
@@ -59,7 +59,6 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .DS_Store
63
62
  - .gitignore
64
63
  - .rspec
65
64
  - .ruby-version
data/.DS_Store DELETED
Binary file