senro 0.2.2 → 0.6.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +17 -0
- data/.gitignore +3 -0
- data/.pryrc +7 -0
- data/.rspec +1 -1
- data/.ruby-version +1 -0
- data/CHANGELOG.md +32 -0
- data/Gemfile +2 -0
- data/README.md +36 -8
- data/lib/senro.rb +1 -0
- data/lib/senro/controller.rb +17 -0
- data/lib/senro/query_params_formatter.rb +30 -5
- data/lib/senro/version.rb +1 -1
- data/senro.gemspec +6 -3
- metadata +65 -19
- data/.travis.yml +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d03ec9547965fe074c4c210218e316f029b19a3738a3135446026b12d4cb76d5
|
4
|
+
data.tar.gz: a29643e005abf21e57165cd71129b6b84c5162fb92c23002ad5e63efa5bc6a73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47d1d91c1dd0b612565cdb8007240a122ad8c264214b99124781d6d48ac38f2a36887bd7d94f117ad541417e6b0dbe2e0ca80806c066867fd1e500442e9f4b12
|
7
|
+
data.tar.gz: 633d79e620191f0998b9e8c80959ee7f648a085af65c59e503e125f458ab18d10de4e2c5e34159ddadf678ccd72d859e4b929238ff5ee775062d968673cc1140
|
@@ -0,0 +1,17 @@
|
|
1
|
+
name: build
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
strategy:
|
6
|
+
fail-fast: false
|
7
|
+
matrix:
|
8
|
+
ruby: [2.5, 2.6, 2.7, 3.0]
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
- uses: ruby/setup-ruby@v1
|
13
|
+
with:
|
14
|
+
ruby-version: ${{ matrix.ruby }}
|
15
|
+
bundler-cache: true
|
16
|
+
- run: bin/setup
|
17
|
+
- run: bundle exec rake spec
|
data/.gitignore
CHANGED
data/.pryrc
ADDED
data/.rspec
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.5
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
|
+
|
7
|
+
## [Unreleased]
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
## [0.6.0] - 2021-05-17
|
12
|
+
### Fixed
|
13
|
+
- [#12](https://github.com/walkersumida/senro/pull/12) Change response values when params are empty
|
14
|
+
|
15
|
+
### Security
|
16
|
+
- [#9](https://github.com/walkersumida/senro/pull/9) Update rake gem
|
17
|
+
|
18
|
+
## [0.5.1] - 2020-04-16
|
19
|
+
### Fixed
|
20
|
+
- [#8](https://github.com/walkersumida/senro/pull/8) Fix a datetime status bug
|
21
|
+
|
22
|
+
## [0.5.0] - 2020-04-16
|
23
|
+
### Changed
|
24
|
+
- [#7](https://github.com/walkersumida/senro/pull/7) Change return values from string to hash
|
25
|
+
|
26
|
+
## [0.4] - 2020-02-22
|
27
|
+
### Added
|
28
|
+
- [#6](https://github.com/walkersumida/senro/pull/6) Add `query_params_formatter_query` method
|
29
|
+
|
30
|
+
## [0.3] - 2020-01-19
|
31
|
+
### Added
|
32
|
+
- [#4](https://github.com/walkersumida/senro/pull/4) Add `query_params_formatter_sort` method
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Senro
|
2
2
|
|
3
|
-
|
3
|
+

|
4
4
|
[](https://badge.fury.io/rb/senro)
|
5
5
|
|
6
6
|
## Installation
|
@@ -20,18 +20,46 @@ Or install it yourself as:
|
|
20
20
|
$ gem install senro
|
21
21
|
|
22
22
|
## Usage
|
23
|
-
###
|
23
|
+
### in Rails
|
24
|
+
#### format sort
|
24
25
|
|
25
26
|
```ruby
|
26
|
-
|
27
|
-
|
27
|
+
class ApplicationController < ActionController::Base # or ::API class
|
28
|
+
include Senro::Controller
|
29
|
+
before_action :query_params_formatter_sort
|
30
|
+
end
|
28
31
|
|
29
|
-
order_clause = Senro::QueryParamsFormatter.sort(params[:sort])
|
30
32
|
|
31
|
-
|
32
|
-
# =>
|
33
|
+
pp params['sort']
|
34
|
+
# => { id: 'asc', name: 'desc' }
|
35
|
+
pp params['original_sort']
|
36
|
+
# => 'id,-name'
|
33
37
|
|
34
|
-
|
38
|
+
# e.g. in ActiveRecord
|
39
|
+
@items = Item.all.order(params['sort'])
|
40
|
+
|
41
|
+
# e.g. in Mongoid
|
42
|
+
@items = Item.all.order_by(params['sort'])
|
43
|
+
```
|
44
|
+
|
45
|
+
#### format query
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
class ApplicationController < ActionController::Base # or ::API class
|
49
|
+
include Senro::Controller
|
50
|
+
before_action :query_params_formatter_query
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
pp params['q']
|
55
|
+
# => { 'query' => 'senro gem', 'status' => { 'type' => ['pr'], 'is' => ['open'], 'label' => ['bug', 'ready'] } }
|
56
|
+
pp params['original_q']
|
57
|
+
# => 'type:pr is:open label:bug label:ready senro gem'
|
58
|
+
|
59
|
+
# e.g.
|
60
|
+
@items = Item.where(title: params['q']['query'],
|
61
|
+
type: params['q']['status']['type'],
|
62
|
+
status: params['q']['status']['is'])
|
35
63
|
```
|
36
64
|
|
37
65
|
## Development
|
data/lib/senro.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Senro #:nodoc:
|
4
|
+
module Controller
|
5
|
+
include Senro::QueryParamsFormatter
|
6
|
+
|
7
|
+
def query_params_formatter_sort
|
8
|
+
params[:original_sort] = params[:sort].clone
|
9
|
+
params[:sort] = Senro::QueryParamsFormatter.sort(params[:sort])
|
10
|
+
end
|
11
|
+
|
12
|
+
def query_params_formatter_query
|
13
|
+
params[:original_q] = params[:q].clone
|
14
|
+
params[:q] = Senro::QueryParamsFormatter.query(params[:q])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Senro
|
4
|
-
|
4
|
+
module QueryParamsFormatter
|
5
5
|
# Format RESTful API's query params to SQL order clause.
|
6
6
|
# +: asc
|
7
7
|
# -: desc
|
@@ -12,14 +12,39 @@ module Senro
|
|
12
12
|
# @param param [String] format string. e.g. `+id,-name`
|
13
13
|
# @return [String] formated stirng
|
14
14
|
def self.sort(param)
|
15
|
+
return {} if param.blank?
|
16
|
+
|
15
17
|
attributes = param.split(',')
|
16
|
-
attributes.
|
18
|
+
attributes.each_with_object({}) do |attr, hash|
|
17
19
|
if /^\-/.match(attr).nil?
|
18
|
-
|
20
|
+
hash[attr.strip.gsub(/^\+/, '').underscore.to_sym] = 'asc'
|
21
|
+
else
|
22
|
+
hash[attr.strip.gsub(/^\-/, '').underscore.to_sym] = 'desc'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Format RESTful API's query params to SQL where clause.
|
28
|
+
#
|
29
|
+
# And convert camel case attributes to snake case one.
|
30
|
+
#
|
31
|
+
# @param param [String] format string. e.g. `is:open is:close senro gem`
|
32
|
+
# @return [String] formated stirng
|
33
|
+
def self.query(param)
|
34
|
+
data = { query: ''.dup, status: {} }
|
35
|
+
|
36
|
+
return data if param.blank?
|
37
|
+
|
38
|
+
elements = param.split(' ')
|
39
|
+
elements.each_with_object(data) do |ele, h|
|
40
|
+
if ele.include? ':'
|
41
|
+
ary = ele.split(':', 2)
|
42
|
+
h[:status][ary[0].underscore.to_sym] =
|
43
|
+
Array(h[:status][ary[0].underscore.to_sym]) << ary[1]
|
19
44
|
else
|
20
|
-
|
45
|
+
h[:query] << (h[:query] == '' ? ele : " #{ele}")
|
21
46
|
end
|
22
|
-
end
|
47
|
+
end
|
23
48
|
end
|
24
49
|
end
|
25
50
|
end
|
data/lib/senro/version.rb
CHANGED
data/senro.gemspec
CHANGED
@@ -23,10 +23,13 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
|
26
|
-
spec.add_development_dependency "
|
27
|
-
spec.add_development_dependency "
|
28
|
-
spec.add_development_dependency "
|
26
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
27
|
+
spec.add_development_dependency "rspec-rails", '~> 4.0'
|
28
|
+
spec.add_development_dependency "rails", ">= 5"
|
29
|
+
spec.add_development_dependency "sqlite3"
|
30
|
+
spec.add_development_dependency 'pry'
|
29
31
|
|
30
32
|
spec.required_ruby_version = '>= 2.5'
|
31
33
|
spec.add_runtime_dependency('activesupport', '>= 5')
|
34
|
+
spec.add_runtime_dependency('actionpack', '>= 5')
|
32
35
|
end
|
metadata
CHANGED
@@ -1,57 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: senro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- WalkerSumida
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 12.3.3
|
20
20
|
type: :development
|
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:
|
26
|
+
version: 12.3.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rspec-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sqlite3
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
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'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: activesupport
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +94,20 @@ dependencies:
|
|
66
94
|
- - ">="
|
67
95
|
- !ruby/object:Gem::Version
|
68
96
|
version: '5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: actionpack
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '5'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '5'
|
69
111
|
description: Library for RESTful API
|
70
112
|
email:
|
71
113
|
- walkersumida@gmail.com
|
@@ -73,9 +115,12 @@ executables: []
|
|
73
115
|
extensions: []
|
74
116
|
extra_rdoc_files: []
|
75
117
|
files:
|
118
|
+
- ".github/workflows/build.yml"
|
76
119
|
- ".gitignore"
|
120
|
+
- ".pryrc"
|
77
121
|
- ".rspec"
|
78
|
-
- ".
|
122
|
+
- ".ruby-version"
|
123
|
+
- CHANGELOG.md
|
79
124
|
- CODE_OF_CONDUCT.md
|
80
125
|
- Dockerfile
|
81
126
|
- Gemfile
|
@@ -86,6 +131,7 @@ files:
|
|
86
131
|
- bin/setup
|
87
132
|
- docker-compose.yml
|
88
133
|
- lib/senro.rb
|
134
|
+
- lib/senro/controller.rb
|
89
135
|
- lib/senro/query_params_formatter.rb
|
90
136
|
- lib/senro/version.rb
|
91
137
|
- senro.gemspec
|
@@ -93,7 +139,7 @@ homepage: https://github.com/walkersumida/senro
|
|
93
139
|
licenses:
|
94
140
|
- MIT
|
95
141
|
metadata: {}
|
96
|
-
post_install_message:
|
142
|
+
post_install_message:
|
97
143
|
rdoc_options: []
|
98
144
|
require_paths:
|
99
145
|
- lib
|
@@ -109,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
155
|
version: '0'
|
110
156
|
requirements: []
|
111
157
|
rubygems_version: 3.0.3
|
112
|
-
signing_key:
|
158
|
+
signing_key:
|
113
159
|
specification_version: 4
|
114
160
|
summary: Library for RESTful API
|
115
161
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
---
|
2
|
-
sudo: false
|
3
|
-
language: ruby
|
4
|
-
cache: bundler
|
5
|
-
rvm:
|
6
|
-
- 2.5
|
7
|
-
- 2.6
|
8
|
-
|
9
|
-
before_install:
|
10
|
-
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
11
|
-
- gem install bundler -v 1.17.2
|
12
|
-
|
13
|
-
before_script:
|
14
|
-
- docker-compose up -d
|
15
|
-
|
16
|
-
after_script:
|
17
|
-
- docker-compose down
|