aggregate_columns 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
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