aggregate_columns 0.9.3 → 0.9.4

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.
Files changed (4) hide show
  1. data/.hgignore +3 -0
  2. data/Rakefile +1 -50
  3. data/lib/aggregate_columns.rb +15 -9
  4. metadata +31 -15
data/.hgignore ADDED
@@ -0,0 +1,3 @@
1
+ syntax: glob
2
+ *swp
3
+ pkg/*
data/Rakefile CHANGED
@@ -1,50 +1 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
- require 'rake/gempackagetask'
5
-
6
- PKG_FILES = FileList[
7
- '[a-zA-Z]*',
8
- 'generators/**/*',
9
- 'lib/**/*',
10
- 'rails/**/*',
11
- 'tasks/**/*',
12
- 'test/**/*'
13
- ]
14
-
15
- spec = Gem::Specification.new do |s|
16
- s.name = "aggregate_columns"
17
- s.version = "0.9.3"
18
- s.author = "Marek Janukowicz"
19
- s.email = "marek@janukowicz.net"
20
- s.homepage = "http://www.bitbucket.org/starware/aggregate_columns"
21
- s.platform = Gem::Platform::RUBY
22
- s.summary = "Create and use aggregate columns in Rails applications"
23
- s.files = PKG_FILES.to_a
24
- s.require_path = "lib"
25
- s.has_rdoc = false
26
- s.extra_rdoc_files = ["README"]
27
- end
28
-
29
- desc 'Create gem'
30
- Rake::GemPackageTask.new(spec) do |pkg|
31
- pkg.gem_spec = spec
32
- end
33
-
34
- desc 'Run tests'
35
- Rake::TestTask.new(:test) do |t|
36
- t.libs << 'lib'
37
- t.libs << 'test'
38
- t.pattern = 'test/**/*_test.rb'
39
- t.verbose = true
40
- end
41
-
42
- desc 'Generate RDoc documentation'
43
- Rake::RDocTask.new(:rdoc) do |rdoc|
44
- rdoc.rdoc_dir = 'rdoc'
45
- rdoc.title = 'AggregateColumns'
46
- rdoc.options << '--line-numbers' << '--inline-source'
47
- rdoc.rdoc_files.include('README')
48
- rdoc.rdoc_files.include('lib/**/*.rb')
49
- end
50
-
1
+ require "bundler/gem_tasks"
@@ -71,16 +71,22 @@ module AggregateColumns
71
71
  foreign_key = assoc_reflection.foreign_key
72
72
  aggregate_table_name = assoc_reflection.table_name
73
73
  klass = assoc_reflection.klass
74
- join_type = options[:join_type] || "LEFT" # TODO: check if within allowed values
74
+ join_type = options[:join_type] # TODO: check if within allowed values
75
75
 
76
- aggregate_rel = klass.select( "#{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).where( "#{table_name}.id = #{foreign_key}" )
77
- #aggregate_rel = klass.select( "#{foreign_key}, #{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).group( foreign_key )
78
- aggregate_rel = yield( aggregate_rel ) if block_given?
79
- rel = rel.
80
- #joins( "#{join_type.to_s.upcase} JOIN (#{aggregate_rel.to_sql}) #{result_column}_join ON #{table_name}.id = #{result_column}_join.#{foreign_key}" ).
81
- #select( result_column.to_s ).
82
- select( "(#{aggregate_rel.to_sql}) AS #{result_column}" ).
83
- order( "#{result_column} DESC" ) # You might reorder if you want to have it differently
76
+ if join_type
77
+ aggregate_rel = klass.select( "#{foreign_key}, #{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).group( foreign_key )
78
+ aggregate_rel = yield( aggregate_rel ) if block_given?
79
+ rel = rel.
80
+ joins( "#{join_type.to_s.upcase} JOIN (#{aggregate_rel.to_sql}) #{result_column}_join ON #{table_name}.id = #{result_column}_join.#{foreign_key}" ).
81
+ select( result_column.to_s ).
82
+ order( "#{result_column} DESC" ) # You might reorder if you want to have it differently
83
+ else
84
+ aggregate_rel = klass.select( "#{function}(#{field}) AS #{result_column}" ).from( aggregate_table_name ).where( "#{table_name}.id = #{foreign_key}" )
85
+ aggregate_rel = yield( aggregate_rel ) if block_given?
86
+ rel = rel.
87
+ select( "(#{aggregate_rel.to_sql}) AS #{result_column}" ).
88
+ order( "#{result_column} DESC" ) # You might reorder if you want to have it differently
89
+ end
84
90
  return rel
85
91
  end
86
92
  end
metadata CHANGED
@@ -1,40 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aggregate_columns
3
3
  version: !ruby/object:Gem::Version
4
- hash: 61
4
+ hash: 51
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 3
10
- version: 0.9.3
9
+ - 4
10
+ version: 0.9.4
11
11
  platform: ruby
12
12
  authors:
13
- - Marek Janukowicz
13
+ - Marek Janukowicz/Starware
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-12-07 00:00:00 +01:00
18
+ date: 2011-12-09 00:00:00 +01:00
19
19
  default_executable:
20
- dependencies: []
21
-
22
- description:
23
- email: marek@janukowicz.net
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: activerecord
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 2
32
+ version: "2"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: ""
36
+ email:
37
+ - marek@janukowicz.net
24
38
  executables: []
25
39
 
26
40
  extensions: []
27
41
 
28
- extra_rdoc_files:
29
- - README
42
+ extra_rdoc_files: []
43
+
30
44
  files:
31
- - Rakefile
45
+ - .hgignore
32
46
  - README
47
+ - Rakefile
33
48
  - lib/aggregate_columns.rb
34
49
  - test/aggregate_columns_test.rb
35
50
  - test/test_helper.rb
36
51
  has_rdoc: true
37
- homepage: http://www.bitbucket.org/starware/aggregate_columns
52
+ homepage: ""
38
53
  licenses: []
39
54
 
40
55
  post_install_message:
@@ -67,5 +82,6 @@ rubygems_version: 1.6.2
67
82
  signing_key:
68
83
  specification_version: 3
69
84
  summary: Create and use aggregate columns in Rails applications
70
- test_files: []
71
-
85
+ test_files:
86
+ - test/aggregate_columns_test.rb
87
+ - test/test_helper.rb