halumi 0.2.3 → 0.2.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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -11
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1b49d5233260f9d57b96dea92baa8eb3e441ed7647d6738227237735a053eeb
4
- data.tar.gz: e2ce02794b63f2db20303a6cfdb27043a914de8da515e2b90139fa42959b2f9c
3
+ metadata.gz: c04a4c14a486cfa8ca40c9bd59db8c7884abb3230778c295adbec636f49b5e8f
4
+ data.tar.gz: '0438cc6e07359e757395fd619abefeb19f5f77b7b9e03b0b21e27b9a32cc2efd'
5
5
  SHA512:
6
- metadata.gz: d3b9bed53256c5d7aaeab098bb78a09cf3410bcb9d3b6dc1bb0fe4e863f1a0f046ce60ceaedf44dad15317f473e05ed78f203c61540fa3af55baa21bc751dd22
7
- data.tar.gz: 3e0804e11cd4b2693d28414ad7ebb0ff833f2564c8a2d3559cbd82632ad728d0caeffa47953933a0f5e6eeec6c26252dbc3859c933a7757bef59a9ca71d29fc6
6
+ metadata.gz: f3a743c8c7f8505be63192f0bdc80106d92fb51cf26c754da6d4fa7da5dfccf264144b48ba461c8b65aa5179228ecec1bc60ba21aa55a4e88ddeb985929d145f
7
+ data.tar.gz: f46d72e5528ed7a1950803d05d2b18ab2bbaf5bd74715fa51de1efd6d1363fedf7a61eb953635b6fd2b13f1ad7052e90fa95e0cc4d673b6b098b1956c3630963
data/README.md CHANGED
@@ -1,13 +1,4 @@
1
1
  # Halumi
2
- ![Gem](https://img.shields.io/gem/v/halumi.svg) ![GitHub](https://img.shields.io/github/license/PiotrWald/halumi.svg)
3
-
4
- One of the patterns in Rails development I find usefull are query objects.
5
- They are essantialy service objects returning a ActiveRecord Relation. Using them
6
- results in less code cluttering your controllers and models. Plus you can easily
7
- unit test each of your queries.
8
-
9
- This Gem adds simple DSL allowing you to build query objects and than merge
10
- them into one query (ActiveRecord::Relation)
11
2
 
12
3
  One of the cool patterns in Rails development are query objects.
13
4
  They are essantialy service objects returning a ActiveRecord Relation. Using them
@@ -41,6 +32,7 @@ class PaginationQuery < Halumi::Query
41
32
  end
42
33
  end
43
34
  ```
35
+
44
36
  ```Ruby
45
37
  class PublishedArticlesQuery
46
38
  def execute
@@ -63,8 +55,24 @@ end
63
55
  This will return published articles, paginated and sorted by creation time
64
56
 
65
57
  ```Ruby
58
+ params = { page: 2, per_page: 10 }
59
+
60
+ ArticlesQuery.new(params).call
61
+ ```
66
62
 
67
- params = { page: 2, per_page: 10 }
63
+ ## Optional integration with Dry::Types
68
64
 
69
- ArticlesQuery.new(params).call
65
+ Params with dry type specified behave like they would be sanatized by it. If a a type
66
+ would rise an error, for example in case of strict types, the error will be rescued and
67
+ query execution will be terminated
68
+
69
+ ```Ruby
70
+ class PaginationQuery < Halumi::Query
71
+ param :per_page, Types::Strict::Integer
72
+ param :page, Types::Strict::Integer
73
+
74
+ def execute
75
+ relation.page(page).per(per_page)
76
+ end
77
+ end
70
78
  ```
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: halumi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Wald
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dry-types
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubygems_version: 3.0.1
84
+ rubygems_version: 3.0.3
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: Use query objects as flexible building blocks