parelation 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 037f22447840bf0175afad3ffc9877399f52e45a
4
- data.tar.gz: 245f4049e008a44245cc335f66efe0229e0702b3
3
+ metadata.gz: 909bd90faf2386e45af33c7f28586f14a5ae442c
4
+ data.tar.gz: d8792b67b2a9d034dbdfb17dadae325513de1c92
5
5
  SHA512:
6
- metadata.gz: 4974134e76747012c27f44408d9804040d15c183a03bc3258000e8e04734d46288ba5f1e2e1213cd906678830042e9913ffd6c7b65f196b68f73954e58f82180
7
- data.tar.gz: af3bcdb37c9ba6f84e27855816c6317ab809b800a5fe6519a5e9f76555da0169f9ebdd26cc1d2f318c54908ce4b3d87534fc55e341485c48950761e0395f2403
6
+ metadata.gz: ad4fd5fd7970aa0f453af670ed7875acaf0add58d8105b512d3da7d93d836a21316507d8e5c48f4aeeb6199a869d14b5cae5eef33b8f8ae97c7bcde0dca0e1d4
7
+ data.tar.gz: 5d8dc24b0bd2bb21b2a8b6cab208aec76523d7378bbdef3f465954eac496c8f2b09ed0a358a7c3ba88028ef06aa9a3ab63b276e88d64aa015f4c474e71019764
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+ gem "activerecord", "~> 4.2.0"
3
+ gemspec path: "../"
@@ -2,6 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 2.1.0
5
- - rbx-2.2
5
+ - 2.2.0
6
6
  gemfile:
7
7
  - .gemfiles/4.1.gemfile
8
+ - .gemfiles/4.2.gemfile
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Michael van Rooijen
1
+ Copyright (c) 2015 Michael van Rooijen
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # Parelation
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/parelation.svg)](http://badge.fury.io/rb/parelation)
3
4
  [![Code Climate](https://codeclimate.com/github/meskyanichi/parelation.png)](https://codeclimate.com/github/meskyanichi/parelation)
4
5
  [![Build Status](https://travis-ci.org/meskyanichi/parelation.svg)](https://travis-ci.org/meskyanichi/parelation)
5
6
 
@@ -7,21 +8,21 @@ Parelation, for Rails/ActiveRecord 4.1.0+, allows you to query your ActiveRecord
7
8
 
8
9
  This library was developed for- and extracted from [HireFire].
9
10
 
11
+ The documentation can be found on [RubyDoc].
12
+
10
13
  ### Compatibility
11
14
 
12
15
  - Rails/ActiveRecord 4.1.0+
13
16
  - Ruby (MRI) 2.0+
14
- - Ruby (RBX) 2.2+
15
17
 
16
18
  ### Installation
17
19
 
18
- Compile and install the gem from source.
20
+ Add the gem to your Gemfile and run `bundle`.
19
21
 
20
22
  ```rb
21
- gem "parelation", github: "meskyanichi/parelation"
23
+ gem "parelation"
22
24
  ```
23
25
 
24
- *This library won't be hosted on RubyGems.org until it's been tested more in development.*
25
26
 
26
27
  ### Example
27
28
 
@@ -241,7 +242,6 @@ This will tell client developers what parameter failed in the HTTP response. Thi
241
242
  Contributions are welcome, but please conform to these requirements:
242
243
 
243
244
  - Ruby (MRI) 2.0+
244
- - Ruby (RBX) 2.2+
245
245
  - ActiveRecord 4.1.0+
246
246
  - 100% Spec Coverage
247
247
  - Generated by when running the test suite
@@ -267,6 +267,12 @@ rspec spec
267
267
  rubycritic lib
268
268
  ```
269
269
 
270
+ To run the local documentation server:
271
+
272
+ ```
273
+ yard server --reload
274
+ ```
275
+
270
276
  Create a new branch and start hacking:
271
277
 
272
278
  ```
@@ -278,11 +284,11 @@ Submit a pull request.
278
284
 
279
285
  ### Author / License
280
286
 
281
- Copyright (c) 2014 Michael van Rooijen ( [@meskyanichi] )<br />
282
- Released under the MIT [License].
287
+ Released under the [MIT License] by [Michael van Rooijen].
283
288
 
284
- [@meskyanichi]: https://twitter.com/meskyanichi
289
+ [Michael van Rooijen]: https://twitter.com/meskyanichi
285
290
  [HireFire]: http://hirefire.io
286
291
  [Passing Specs]: https://travis-ci.org/meskyanichi/parelation
287
292
  [Code Climate Score]: https://codeclimate.com/github/meskyanichi/parelation
288
- [License]: https://github.com/meskyanichi/parelation/blob/master/LICENSE
293
+ [RubyDoc]: http://rubydoc.info/github/meskyanichi/parelation/master/frames
294
+ [MIT License]: https://github.com/meskyanichi/parelation/blob/master/LICENSE
@@ -3,7 +3,7 @@ module Parelation
3
3
  require "parelation/errors/parameter"
4
4
  end
5
5
 
6
- module Criteria
6
+ class Criteria
7
7
  require "parelation/criteria/select"
8
8
  require "parelation/criteria/limit"
9
9
  require "parelation/criteria/offset"
@@ -1,4 +1,4 @@
1
- module Parelation::Criteria
1
+ class Parelation::Criteria
2
2
 
3
3
  # @return [ActiveRecord::Relation] the current criteria chain
4
4
  #
@@ -14,7 +14,7 @@ module Parelation::Criteria
14
14
 
15
15
  # @param chain [ActiveRecord::Relation]
16
16
  # @param param [String]
17
- # @param value [String, Symbol, Array, Hash]
17
+ # @param value [String, Array, Hash]
18
18
  #
19
19
  def initialize(chain, param, value)
20
20
  @chain = chain
@@ -1,5 +1,4 @@
1
- class Parelation::Criteria::Limit
2
- include Parelation::Criteria
1
+ class Parelation::Criteria::Limit < Parelation::Criteria
3
2
 
4
3
  # @param param [String]
5
4
  # @return [TrueClass, FalseClass]
@@ -1,5 +1,4 @@
1
- class Parelation::Criteria::Offset
2
- include Parelation::Criteria
1
+ class Parelation::Criteria::Offset < Parelation::Criteria
3
2
 
4
3
  # @param param [String]
5
4
  # @return [TrueClass, FalseClass]
@@ -1,5 +1,4 @@
1
- class Parelation::Criteria::Order
2
- include Parelation::Criteria
1
+ class Parelation::Criteria::Order < Parelation::Criteria
3
2
 
4
3
  require_relative "order/object"
5
4
 
@@ -1,5 +1,4 @@
1
- class Parelation::Criteria::Query
2
- include Parelation::Criteria
1
+ class Parelation::Criteria::Query < Parelation::Criteria
3
2
 
4
3
  # @param param [String]
5
4
  # @return [TrueClass, FalseClass]
@@ -1,5 +1,4 @@
1
- class Parelation::Criteria::Select
2
- include Parelation::Criteria
1
+ class Parelation::Criteria::Select < Parelation::Criteria
3
2
 
4
3
  # @param param [String]
5
4
  # @return [TrueClass, FalseClass]
@@ -1,5 +1,4 @@
1
- class Parelation::Criteria::Where
2
- include Parelation::Criteria
1
+ class Parelation::Criteria::Where < Parelation::Criteria
3
2
 
4
3
  require_relative "where/caster"
5
4
  require_relative "where/directional_query_applier"
@@ -22,7 +21,7 @@ class Parelation::Criteria::Where
22
21
  when "where_not"
23
22
  chain.where.not(field => value)
24
23
  when "where_gt", "where_gte", "where_lt", "where_lte"
25
- DirectionalQueryApplier.new(param, criteria, chain).apply
24
+ DirectionalQueryApplier.new(chain, param, field, value).apply
26
25
  end
27
26
  end
28
27
  end
@@ -1,49 +1,53 @@
1
- class Parelation::Criteria::Where::DirectionalQueryApplier
2
-
3
- # @return [Hash] keyword to operator mappings
4
- #
5
- OPERATOR_MAPPING = {
6
- "where_gt" => ">",
7
- "where_gte" => ">=",
8
- "where_lt" => "<",
9
- "where_lte" => "<="
10
- }
11
-
12
- # @return [String]
13
- #
14
- attr_reader :operator
15
-
16
- # @return [Hash]
17
- #
18
- attr_reader :criteria
19
-
20
- # @return [ActiveRecord::Relation]
21
- #
22
- attr_reader :chain
23
-
24
- # @param operator [String] the named operator from the params
25
- # @param criteria [Hash] the data to build query operations with
26
- # @param chain [ActiveRecord::Relation] the chain to apply to
27
- #
28
- def initialize(operator, criteria, chain)
29
- @operator = operator
30
- @criteria = criteria
31
- @chain = chain
32
- end
33
-
34
- # @return [ActiveRecord::Relation] the chain with newly applied operations
35
- #
36
- def apply
37
- criteria.inject(chain) do |chain, (key, value)|
38
- chain.where(sql, key, value)
39
- end
40
- end
41
-
42
- private
43
-
44
- # @return [String] the base SQL template to build queries on-top of
45
- #
46
- def sql
47
- %Q{"#{chain.arel_table.name}".? #{OPERATOR_MAPPING[operator]} ?}
48
- end
1
+ class Parelation::Criteria::Where::DirectionalQueryApplier
2
+
3
+ # @return [Hash] keyword to operator mappings
4
+ #
5
+ OPERATOR_MAPPING = {
6
+ "where_gt" => ">",
7
+ "where_gte" => ">=",
8
+ "where_lt" => "<",
9
+ "where_lte" => "<="
10
+ }
11
+
12
+ # @return [ActiveRecord::Relation]
13
+ #
14
+ attr_reader :chain
15
+
16
+ # @return [String]
17
+ #
18
+ attr_reader :operator
19
+
20
+ # @return [String]
21
+ #
22
+ attr_reader :field
23
+
24
+ # @return [String]
25
+ #
26
+ attr_reader :value
27
+
28
+ # @param chain [ActiveRecord::Relation] the chain to apply to
29
+ # @param operator [String] the named operator from the params
30
+ # @param field [String] the field to query on
31
+ # @param value [String] the value of the query
32
+ #
33
+ def initialize(chain, operator, field, value)
34
+ @chain = chain
35
+ @operator = operator
36
+ @field = field
37
+ @value = value
49
38
  end
39
+
40
+ # @return [ActiveRecord::Relation] the chain with newly applied operations
41
+ #
42
+ def apply
43
+ chain.where(sql, field, value)
44
+ end
45
+
46
+ private
47
+
48
+ # @return [String] the base SQL template to build queries on-top of
49
+ #
50
+ def sql
51
+ %Q{"#{chain.arel_table.name}".? #{OPERATOR_MAPPING[operator]} ?}
52
+ end
53
+ end
@@ -1,3 +1,3 @@
1
1
  module Parelation
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -18,12 +18,11 @@ Gem::Specification.new do |spec|
18
18
 
19
19
  spec.add_dependency "activerecord", ">= 4.1.0"
20
20
  spec.add_development_dependency "bundler"
21
- spec.add_development_dependency "rake"
22
- spec.add_development_dependency "rspec"
23
- spec.add_development_dependency "mocha"
24
- spec.add_development_dependency "sqlite3"
25
- spec.add_development_dependency "database_cleaner"
26
- spec.add_development_dependency "pry"
27
- spec.add_development_dependency "simplecov"
28
- spec.add_development_dependency "yard"
21
+ spec.add_development_dependency "rake", "~> 10.4.2"
22
+ spec.add_development_dependency "rspec", "~> 3.1.0"
23
+ spec.add_development_dependency "sqlite3", "~> 1.3.10"
24
+ spec.add_development_dependency "database_cleaner", "~> 1.4.0"
25
+ spec.add_development_dependency "pry", "~> 0.10.1"
26
+ spec.add_development_dependency "simplecov", "~> 0.9.1"
27
+ spec.add_development_dependency "yard", "~> 0.8.7.6"
29
28
  end
@@ -22,8 +22,9 @@ describe Parelation::Applier do
22
22
  "offset" => "100"
23
23
  }
24
24
 
25
- criteria = klass.new(Project.create.tickets, params).apply
26
- ar_query = Project.create.tickets
25
+ project = Project.create
26
+ criteria = klass.new(project.tickets, params).apply
27
+ ar_query = project.tickets
27
28
  .select(:id, :name, :state, :message)
28
29
  .where(state: ["open", "pending"])
29
30
  .where.not(state: "closed")
@@ -8,13 +8,6 @@ SimpleCov.start
8
8
  require "parelation"
9
9
 
10
10
  RSpec.configure do |config|
11
- config.mock_framework = :mocha
12
-
13
- config.before do
14
- DatabaseCleaner.start
15
- end
16
-
17
- config.after do
18
- DatabaseCleaner.clean
19
- end
11
+ config.before { DatabaseCleaner.start }
12
+ config.after { DatabaseCleaner.clean }
20
13
  end
@@ -1,7 +1,6 @@
1
- ActiveRecord::Base
2
- .logger = Logger.new(LOG_PATH)
3
- ActiveRecord::Base
4
- .establish_connection(adapter: "sqlite3", database: ":memory:")
1
+ ActiveRecord::Base.establish_connection(
2
+ adapter: "sqlite3", database: ":memory:"
3
+ )
5
4
 
6
5
  class Schema < ActiveRecord::Migration
7
6
 
@@ -1,14 +1,8 @@
1
- require "fileutils"
2
- require "logger"
3
1
  require "pry"
4
2
  require "sqlite3"
5
3
  require "active_record"
6
4
 
7
5
  ROOT_PATH = File.expand_path("../../..", __FILE__)
8
6
  SPEC_PATH = File.join(ROOT_PATH, "spec")
9
- TMP_PATH = File.join(ROOT_PATH, "tmp")
10
- LOG_PATH = File.join(TMP_PATH, "parelation.log")
11
-
12
- FileUtils.mkdir_p(TMP_PATH)
13
7
 
14
8
  require "#{SPEC_PATH}/support/db"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parelation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael van Rooijen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-19 00:00:00.000000000 Z
11
+ date: 2015-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -42,114 +42,100 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 10.4.2
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 10.4.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 3.1.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: mocha
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
68
+ version: 3.1.0
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: sqlite3
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - ">="
73
+ - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: 1.3.10
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - ">="
80
+ - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: 1.3.10
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: database_cleaner
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - ">="
87
+ - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '0'
89
+ version: 1.4.0
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - ">="
94
+ - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: '0'
96
+ version: 1.4.0
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: pry
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
- - - ">="
101
+ - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: '0'
103
+ version: 0.10.1
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
- - - ">="
108
+ - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: '0'
110
+ version: 0.10.1
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: simplecov
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
- - - ">="
115
+ - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: '0'
117
+ version: 0.9.1
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
- - - ">="
122
+ - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: '0'
124
+ version: 0.9.1
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: yard
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
- - - ">="
129
+ - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: '0'
131
+ version: 0.8.7.6
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
- - - ">="
136
+ - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: '0'
138
+ version: 0.8.7.6
153
139
  description:
154
140
  email:
155
141
  - michael@vanrooijen.io
@@ -158,6 +144,7 @@ extensions: []
158
144
  extra_rdoc_files: []
159
145
  files:
160
146
  - ".gemfiles/4.1.gemfile"
147
+ - ".gemfiles/4.2.gemfile"
161
148
  - ".gitignore"
162
149
  - ".rspec"
163
150
  - ".travis.yml"
@@ -213,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
200
  version: '0'
214
201
  requirements: []
215
202
  rubyforge_project:
216
- rubygems_version: 2.2.2
203
+ rubygems_version: 2.4.5
217
204
  signing_key:
218
205
  specification_version: 4
219
206
  summary: Translates HTTP parameters to ActiveRecord queries.