wharel 0.3.0 → 0.4.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
  SHA256:
3
- metadata.gz: cc8166e429d2ef5b94da9090fc6e37c8c98cb8008d930af8229732d6c0410383
4
- data.tar.gz: b81996c6e91ceb04b0275fc808db76eeec0fa9c412129bc9766431debb5850dd
3
+ metadata.gz: a3c803c1e0aa9c250d629af479b9ccbc85c615654d5b3cd3ea1090a519f3a883
4
+ data.tar.gz: 183364f83c7f226c02ab2d2498dbe0caa429cb684c2c1ca9180d689e33245832
5
5
  SHA512:
6
- metadata.gz: 84952c21346ffd4a9fa7feef44e4c9ed1ff2e497de79380aa19438c4f373c9a404708b6d21e1f29fda6a52b2debf58e73bb015c4de11ec43513bab0d925423d1
7
- data.tar.gz: 948c2aa3dc4cd7c18e70119c7f55f34d5159181eb97e9cb3e826927e1bebd83fdd34cc09f08005896414679ee6499c1e988ec45f9e6dafa88482391fe62d3681
6
+ metadata.gz: e9890716f4e44c82a5e8df2dea4d29987dc7ae21ad1ea20802ae53ccaf47b1be453309ac221335d1433677ba8b3e2366351cc721a7689e1b339741114ac38991
7
+ data.tar.gz: 3341d125908a27b82f70bbbc7626adb4621c37d9bf69fb272a93b32e434772fb9e8132284d79e0730af3c61a0b9f057353b994a484264311f304009a414af523
data/CHANGELOG.md CHANGED
@@ -1,19 +1,26 @@
1
1
  # Wharel Changelog
2
2
 
3
+ ## 0.4
4
+
5
+ ### 0.4.0 (November 2, 2019)
6
+
7
+ - Add support for `group`, `having`, `pluck` and `or`
8
+ ([#8](https://github.com/shioyama/wharel/pull/8))
9
+
3
10
  ## 0.3
4
11
 
5
- ### 0.3.0
12
+ ### 0.3.0 (November 1, 2019)
6
13
 
7
14
  - Add support for `order` ([#2](https://github.com/shioyama/wharel/pull/7))
8
15
 
9
16
  ## 0.2
10
17
 
11
- ### 0.2.0
18
+ ### 0.2.0 (May 25, 2018)
12
19
 
13
20
  - Add support for `where.not` ([#1](https://github.com/shioyama/wharel/pull/1))
14
21
 
15
22
  ## 0.1
16
23
 
17
- ### 0.1.0
24
+ ### 0.1.0 (May 25, 2018)
18
25
 
19
26
  - Basic support for `where` with blocks.
data/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # Wharel
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/wharel.svg)][gem]
3
4
  [![Build Status](https://travis-ci.org/shioyama/wharel.svg?branch=master)][travis]
4
5
 
6
+ [gem]: https://rubygems.org/gems/wharel
5
7
  [travis]: https://travis-ci.org/shioyama/wharel
6
8
 
7
9
  Wharel helps you write concise Arel queries with ActiveRecord using Virtual
@@ -26,7 +28,7 @@ post](https://dejimata.com/2018/5/30/arel-with-wharel).
26
28
  Add this line to your application's Gemfile:
27
29
 
28
30
  ```ruby
29
- gem 'wharel', '~> 0.3.0'
31
+ gem 'wharel', '~> 0.4.0'
30
32
  ```
31
33
 
32
34
  And then execute:
@@ -68,18 +70,20 @@ Post.where { title.matches("foo").and(content.matches("bar")) }
68
70
  Wharel will map `title` and `content` in the block to the appropriate Arel
69
71
  attribute for the column.
70
72
 
71
- Works with `where.not` too:
73
+ Wharel also supports most other query methods, e.g. `not`:
72
74
 
73
75
  ```ruby
74
76
  Post.where.not { title.eq("foo") }
75
77
  ```
76
78
 
77
- ... and also with `order`:
79
+ ... and `order`:
78
80
 
79
81
  ```ruby
80
82
  Post.order { title.lower }
81
83
  ```
82
84
 
85
+ Wharel also supports `having`, `pluck`, `group` and `or` in the same way.
86
+
83
87
  Now suppose we have another model `Comment` with a column `content`, and a
84
88
  `Post` `has_many :comments`:
85
89
 
data/lib/wharel.rb CHANGED
@@ -3,12 +3,16 @@ require "active_record"
3
3
 
4
4
  module Wharel
5
5
  module QueryMethods
6
- def where(opts = :chain, *rest, &block)
7
- block_given? ? super(VirtualRow.build_query(self, &block)) : super
6
+ %w[where order having pluck group].each do |method_name|
7
+ module_eval <<-EOM, __FILE__, __LINE__ + 1
8
+ def #{method_name}(*, &block)
9
+ block_given? ? super(VirtualRow.build_query(self, &block)) : super
10
+ end
11
+ EOM
8
12
  end
9
13
 
10
- def order(*args, &block)
11
- block_given? ? super(VirtualRow.build_query(self, &block)) : super
14
+ def or(*, &block)
15
+ block_given? ? super(model.where(VirtualRow.build_query(self, &block))) : super
12
16
  end
13
17
 
14
18
  module WhereChain
@@ -1,3 +1,3 @@
1
1
  module Wharel
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wharel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Salzberg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-01 00:00:00.000000000 Z
11
+ date: 2019-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord