forest_liana 1.4.2 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28f4946f83a3b1531e42b8ff2e2bb3c8f971a027
4
- data.tar.gz: ab96ce677c9860afeffe490934b22d24cf66dc04
3
+ metadata.gz: 9847fca87fc1e7caff49a8aaf899a23c33169314
4
+ data.tar.gz: bf383e4e3b8fcc4be34a368018bdd8ab43e1bb0c
5
5
  SHA512:
6
- metadata.gz: 20eb0265bc729dba9340de52f8de78b8d9a39ad930ea5226e6388197d8b253f19543011a35ba06214877012dc11a253fb70e00a486558320abdc206db97329d2
7
- data.tar.gz: feb2cda4aaf0be455c7370aa2088cc3f3891c3cca990fdaa7a9a14f621888c31d9ba3779b6d8e6963ea676a54d98f23887efbc6a67e0a928ab5d59bbcddde4af
6
+ metadata.gz: 812421ddef29e95a562c928d610b3dfb148a7b9526ce69e88586d89c6b10a3569f9d32ea8cc8243ae1d4e67056ee406c770ed8b5a6fbf00e06a6dbd0ba01a1ea
7
+ data.tar.gz: bec80b2cb5b6524af1b6c2ddcbdd7a132910c85b25f9a6f06ca0455165c106c46b9cecc9c7c4dba37f4945dabc805bf8208109f89d7c3c96e38e360b3456865d
@@ -1,15 +1,14 @@
1
1
  module ForestLiana
2
- class LineStatGetter
2
+ class LineStatGetter < StatGetter
3
3
  attr_accessor :record
4
4
 
5
5
  def initialize(resource, params)
6
- @resource = resource
7
- @params = params
6
+ super(resource, params)
8
7
  @populates = {}
9
8
  end
10
9
 
11
10
  def perform
12
- value = @resource.unscoped
11
+ value = @resource.unscoped.eager_load(includes)
13
12
 
14
13
  if @params[:filterType] && @params[:filters]
15
14
  conditions = []
@@ -24,7 +23,7 @@ module ForestLiana
24
23
  value = value.where(conditions.join(filter_operator))
25
24
  end
26
25
 
27
- value = value.send(time_range, @params[:group_by_date_field])
26
+ value = value.send(time_range, group_by_date_field)
28
27
  value = value.group(group_by_field || :id) if group_by_field
29
28
 
30
29
  value = value.send(@params[:aggregate].downcase, @params[:aggregate_field])
@@ -52,6 +51,10 @@ module ForestLiana
52
51
 
53
52
  private
54
53
 
54
+ def group_by_date_field
55
+ "#{@resource.table_name}.#{@params[:group_by_date_field]}"
56
+ end
57
+
55
58
  def group_by_field
56
59
  field_name = @params[:group_by_field]
57
60
  association = @resource.reflect_on_association(field_name) if field_name
@@ -7,17 +7,17 @@ module ForestLiana
7
7
  lastMonth: { duration: 1, period: 'month' }, # TODO: Remove once new filter protocol is live
8
8
  last3Months: { duration: 3, period: 'month' }, # TODO: Remove once new filter protocol is live
9
9
  lastYear: { duration: 1, period: 'year' }, # TODO: Remove once new filter protocol is live
10
- $yesterday => { duration: 1, period: 'day' },
11
- $previousWeek => { duration: 1, period: 'week' },
12
- $previousMonth => { duration: 1, period: 'month' },
13
- $previousQuarter => { duration: 3, period: 'month',
10
+ :$yesterday => { duration: 1, period: 'day' },
11
+ :$previousWeek => { duration: 1, period: 'week' },
12
+ :$previousMonth => { duration: 1, period: 'month' },
13
+ :$previousQuarter => { duration: 3, period: 'month',
14
14
  period_of_time: 'quarter' },
15
- $previousYear => { duration: 1, period: 'year' },
16
- $weekToDate => { duration: 1, period: 'week', to_date: true },
17
- $monthToDate => { duration: 1, period: 'month', to_date: true },
18
- $quarterToDate => { duration: 3, period: 'month',
15
+ :$previousYear => { duration: 1, period: 'year' },
16
+ :$weekToDate => { duration: 1, period: 'week', to_date: true },
17
+ :$monthToDate => { duration: 1, period: 'month', to_date: true },
18
+ :$quarterToDate => { duration: 3, period: 'month',
19
19
  period_of_time: 'quarter', to_date: true },
20
- $yearToDate => { duration: 1, period: 'year', to_date: true }
20
+ :$yearToDate => { duration: 1, period: 'year', to_date: true }
21
21
  }
22
22
 
23
23
  PERIODS_FROM_NOW = 'fromNow' # TODO: Remove once new filter protocol is live
@@ -1,12 +1,7 @@
1
1
  module ForestLiana
2
- class PieStatGetter
2
+ class PieStatGetter < StatGetter
3
3
  attr_accessor :record
4
4
 
5
- def initialize(resource, params)
6
- @resource = resource
7
- @params = params
8
- end
9
-
10
5
  def perform
11
6
  if @params[:group_by_field]
12
7
  value = @resource
@@ -23,18 +18,12 @@ module ForestLiana
23
18
  end
24
19
  end
25
20
 
26
- # NOTICE: The generated alias for a count is "count_all", for a sum the
27
- # alias looks like "sum_#{aggregate_field}"
28
- field = 'all'
29
- if @params[:aggregate].downcase == 'sum'
30
- field = @params[:aggregate_field].downcase
31
- end
32
-
33
21
  value = value
34
22
  .unscoped
23
+ .eager_load(includes)
35
24
  .where(conditions.join(filter_operator))
36
- .group(@params[:group_by_field])
37
- .order("#{@params[:aggregate].downcase}_#{field} DESC")
25
+ .group("#{@resource.table_name}.#{@params[:group_by_field]}")
26
+ .order(order)
38
27
  .send(@params[:aggregate].downcase, @params[:aggregate_field])
39
28
  .map do |k, v|
40
29
  # NOTICE: Display the enum name instead of a integer if "enum" type
@@ -50,5 +39,20 @@ module ForestLiana
50
39
  end
51
40
  end
52
41
 
42
+ def order
43
+ # NOTICE: The generated alias for a count is "count_all", for a sum the
44
+ # alias looks like "sum_#{aggregate_field}"
45
+ field = 'all'
46
+ if @params[:aggregate].downcase == 'sum'
47
+ field = @params[:aggregate_field].downcase
48
+ end
49
+
50
+ if includes.size == 0
51
+ "#{@params[:aggregate].downcase}_#{field} DESC"
52
+ else
53
+ "#{@params[:aggregate].downcase}_id DESC"
54
+ end
55
+ end
56
+
53
57
  end
54
58
  end
@@ -0,0 +1,18 @@
1
+ module ForestLiana
2
+ class StatGetter
3
+ attr_accessor :record
4
+
5
+ def initialize(resource, params)
6
+ @resource = resource
7
+ @params = params
8
+ end
9
+
10
+ private
11
+
12
+ def includes
13
+ SchemaUtils.one_associations(@resource)
14
+ .select { |association| SchemaUtils.model_included?(association.klass) }
15
+ .map(&:name)
16
+ end
17
+ end
18
+ end
@@ -1,16 +1,11 @@
1
1
  module ForestLiana
2
- class ValueStatGetter
2
+ class ValueStatGetter < StatGetter
3
3
  attr_accessor :record
4
4
 
5
- def initialize(resource, params)
6
- @resource = resource
7
- @params = params
8
- end
9
-
10
5
  def perform
11
6
  return if @params[:aggregate].blank?
12
- valueCurrent = @resource.unscoped
13
- valuePrevious = @resource.unscoped
7
+ valueCurrent = @resource.unscoped.eager_load(includes)
8
+ valuePrevious = @resource.unscoped.eager_load(includes)
14
9
  filter_date_interval = false
15
10
 
16
11
  if @params[:filterType] && @params[:filters]
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "1.4.2"
2
+ VERSION = "1.4.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_liana
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-15 00:00:00.000000000 Z
11
+ date: 2016-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -179,6 +179,7 @@ files:
179
179
  - app/services/forest_liana/schema_adapter.rb
180
180
  - app/services/forest_liana/schema_utils.rb
181
181
  - app/services/forest_liana/search_query_builder.rb
182
+ - app/services/forest_liana/stat_getter.rb
182
183
  - app/services/forest_liana/stripe_bank_accounts_getter.rb
183
184
  - app/services/forest_liana/stripe_cards_getter.rb
184
185
  - app/services/forest_liana/stripe_invoices_getter.rb