redi_search 1.0.4 → 3.0.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/lint.yml +18 -0
- data/.github/workflows/tests.yml +45 -0
- data/.rubocop.yml +136 -193
- data/Appraisals +6 -6
- data/Gemfile +4 -4
- data/README.md +79 -92
- data/Rakefile +15 -3
- data/bin/console +29 -0
- data/gemfiles/{rails_51.gemfile → activerecord_51.gemfile} +3 -4
- data/gemfiles/{rails_52.gemfile → activerecord_52.gemfile} +3 -4
- data/gemfiles/{rails_6.gemfile → activerecord_61.gemfile} +3 -4
- data/lib/redi_search.rb +8 -7
- data/lib/redi_search/{alter.rb → add_field.rb} +13 -5
- data/lib/redi_search/client.rb +23 -11
- data/lib/redi_search/client/response.rb +5 -1
- data/lib/redi_search/configuration.rb +1 -11
- data/lib/redi_search/create.rb +7 -4
- data/lib/redi_search/document.rb +5 -13
- data/lib/redi_search/document/display.rb +9 -9
- data/lib/redi_search/document/finder.rb +12 -42
- data/lib/redi_search/hset.rb +28 -0
- data/lib/redi_search/index.rb +24 -22
- data/lib/redi_search/lazily_load.rb +6 -11
- data/lib/redi_search/log_subscriber.rb +25 -53
- data/lib/redi_search/model.rb +37 -39
- data/lib/redi_search/schema.rb +3 -3
- data/lib/redi_search/schema/field.rb +2 -3
- data/lib/redi_search/schema/tag_field.rb +1 -1
- data/lib/redi_search/schema/text_field.rb +1 -1
- data/lib/redi_search/search.rb +15 -25
- data/lib/redi_search/search/clauses.rb +6 -7
- data/lib/redi_search/search/clauses/application_clause.rb +20 -5
- data/lib/redi_search/search/clauses/boolean.rb +9 -9
- data/lib/redi_search/search/clauses/highlight.rb +18 -2
- data/lib/redi_search/search/clauses/limit.rb +7 -5
- data/lib/redi_search/search/clauses/or.rb +1 -1
- data/lib/redi_search/search/clauses/return.rb +1 -1
- data/lib/redi_search/search/clauses/slop.rb +1 -1
- data/lib/redi_search/search/clauses/sort_by.rb +1 -1
- data/lib/redi_search/search/clauses/where.rb +10 -2
- data/lib/redi_search/search/result.rb +10 -10
- data/lib/redi_search/search/term.rb +7 -6
- data/lib/redi_search/spellcheck.rb +3 -4
- data/lib/redi_search/spellcheck/result.rb +1 -1
- data/lib/redi_search/validatable.rb +49 -0
- data/lib/redi_search/validations/inclusion.rb +26 -0
- data/lib/redi_search/validations/numericality.rb +45 -0
- data/lib/redi_search/validations/presence.rb +29 -0
- data/lib/redi_search/version.rb +1 -1
- data/redi_search.gemspec +1 -3
- metadata +20 -50
- data/.travis.yml +0 -31
- data/bin/test +0 -7
- data/lib/redi_search/add.rb +0 -63
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RediSearch
|
4
|
+
module Validations
|
5
|
+
class Presence
|
6
|
+
def initialize(field:)
|
7
|
+
@field = field
|
8
|
+
end
|
9
|
+
|
10
|
+
def validate!(object)
|
11
|
+
return true if value_present?(object.send(field))
|
12
|
+
|
13
|
+
raise RediSearch::ValidationError, "#{field} can't be blank"
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
attr_reader :field
|
19
|
+
|
20
|
+
def value_present?(value)
|
21
|
+
if value.respond_to?(:empty?)
|
22
|
+
!value.empty?
|
23
|
+
else
|
24
|
+
value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/redi_search/version.rb
CHANGED
data/redi_search.gemspec
CHANGED
@@ -26,12 +26,10 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.required_ruby_version = ">= 2.5.0"
|
28
28
|
|
29
|
-
spec.add_runtime_dependency "activemodel", ">= 5.1", "< 6.1"
|
30
29
|
spec.add_runtime_dependency "activesupport", ">= 5.1", "< 6.1"
|
31
30
|
spec.add_runtime_dependency "redis", ">= 4.0", "< 5.0"
|
32
31
|
|
33
|
-
spec.add_development_dependency "appraisal", "~> 2.2"
|
34
32
|
spec.add_development_dependency "bundler", ">= 1.17", "< 3"
|
35
33
|
spec.add_development_dependency "minitest", "~> 5.0"
|
36
|
-
spec.add_development_dependency "rake", "~>
|
34
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
37
35
|
end
|
metadata
CHANGED
@@ -1,35 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redi_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Pezza
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: activemodel
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '5.1'
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '6.1'
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '5.1'
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '6.1'
|
33
13
|
- !ruby/object:Gem::Dependency
|
34
14
|
name: activesupport
|
35
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,20 +50,6 @@ dependencies:
|
|
70
50
|
- - "<"
|
71
51
|
- !ruby/object:Gem::Version
|
72
52
|
version: '5.0'
|
73
|
-
- !ruby/object:Gem::Dependency
|
74
|
-
name: appraisal
|
75
|
-
requirement: !ruby/object:Gem::Requirement
|
76
|
-
requirements:
|
77
|
-
- - "~>"
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: '2.2'
|
80
|
-
type: :development
|
81
|
-
prerelease: false
|
82
|
-
version_requirements: !ruby/object:Gem::Requirement
|
83
|
-
requirements:
|
84
|
-
- - "~>"
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: '2.2'
|
87
53
|
- !ruby/object:Gem::Dependency
|
88
54
|
name: bundler
|
89
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,15 +90,15 @@ dependencies:
|
|
124
90
|
requirements:
|
125
91
|
- - "~>"
|
126
92
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
93
|
+
version: '13.0'
|
128
94
|
type: :development
|
129
95
|
prerelease: false
|
130
96
|
version_requirements: !ruby/object:Gem::Requirement
|
131
97
|
requirements:
|
132
98
|
- - "~>"
|
133
99
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
135
|
-
description:
|
100
|
+
version: '13.0'
|
101
|
+
description:
|
136
102
|
email: npezza93@gmail.com
|
137
103
|
executables: []
|
138
104
|
extensions: []
|
@@ -141,9 +107,10 @@ files:
|
|
141
107
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
142
108
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
143
109
|
- ".github/logo.svg"
|
110
|
+
- ".github/workflows/lint.yml"
|
111
|
+
- ".github/workflows/tests.yml"
|
144
112
|
- ".gitignore"
|
145
113
|
- ".rubocop.yml"
|
146
|
-
- ".travis.yml"
|
147
114
|
- Appraisals
|
148
115
|
- CODE_OF_CONDUCT.md
|
149
116
|
- Gemfile
|
@@ -153,14 +120,12 @@ files:
|
|
153
120
|
- bin/console
|
154
121
|
- bin/publish
|
155
122
|
- bin/setup
|
156
|
-
- bin/test
|
157
123
|
- gemfiles/.bundle/config
|
158
|
-
- gemfiles/
|
159
|
-
- gemfiles/
|
160
|
-
- gemfiles/
|
124
|
+
- gemfiles/activerecord_51.gemfile
|
125
|
+
- gemfiles/activerecord_52.gemfile
|
126
|
+
- gemfiles/activerecord_61.gemfile
|
161
127
|
- lib/redi_search.rb
|
162
|
-
- lib/redi_search/
|
163
|
-
- lib/redi_search/alter.rb
|
128
|
+
- lib/redi_search/add_field.rb
|
164
129
|
- lib/redi_search/client.rb
|
165
130
|
- lib/redi_search/client/response.rb
|
166
131
|
- lib/redi_search/configuration.rb
|
@@ -168,6 +133,7 @@ files:
|
|
168
133
|
- lib/redi_search/document.rb
|
169
134
|
- lib/redi_search/document/display.rb
|
170
135
|
- lib/redi_search/document/finder.rb
|
136
|
+
- lib/redi_search/hset.rb
|
171
137
|
- lib/redi_search/index.rb
|
172
138
|
- lib/redi_search/lazily_load.rb
|
173
139
|
- lib/redi_search/log_subscriber.rb
|
@@ -200,6 +166,10 @@ files:
|
|
200
166
|
- lib/redi_search/search/term.rb
|
201
167
|
- lib/redi_search/spellcheck.rb
|
202
168
|
- lib/redi_search/spellcheck/result.rb
|
169
|
+
- lib/redi_search/validatable.rb
|
170
|
+
- lib/redi_search/validations/inclusion.rb
|
171
|
+
- lib/redi_search/validations/numericality.rb
|
172
|
+
- lib/redi_search/validations/presence.rb
|
203
173
|
- lib/redi_search/version.rb
|
204
174
|
- redi_search.gemspec
|
205
175
|
homepage: https://github.com/npezza93/redi_search
|
@@ -210,7 +180,7 @@ metadata:
|
|
210
180
|
homepage_uri: https://github.com/npezza93/redi_search
|
211
181
|
source_code_uri: https://github.com/npezza93/redi_search
|
212
182
|
changelog_uri: https://github.com/npezza93/redi_search/releases
|
213
|
-
post_install_message:
|
183
|
+
post_install_message:
|
214
184
|
rdoc_options: []
|
215
185
|
require_paths:
|
216
186
|
- lib
|
@@ -225,8 +195,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
195
|
- !ruby/object:Gem::Version
|
226
196
|
version: '0'
|
227
197
|
requirements: []
|
228
|
-
rubygems_version: 3.
|
229
|
-
signing_key:
|
198
|
+
rubygems_version: 3.1.4
|
199
|
+
signing_key:
|
230
200
|
specification_version: 4
|
231
201
|
summary: RediSearch ruby wrapper that can integrate with Rails
|
232
202
|
test_files: []
|
data/.travis.yml
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
---
|
2
|
-
env:
|
3
|
-
global:
|
4
|
-
- CC_TEST_REPORTER_ID=fec34310f03fd2cc767a85fa23d5102f3dca67b9cc967a48d9940027731394e8
|
5
|
-
sudo: false
|
6
|
-
language: ruby
|
7
|
-
cache:
|
8
|
-
directories:
|
9
|
-
- gemfiles/vendor/bundle
|
10
|
-
- /home/travis/.rvm/
|
11
|
-
services: docker
|
12
|
-
before_script:
|
13
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
14
|
-
- chmod +x ./cc-test-reporter
|
15
|
-
- ./cc-test-reporter before-build
|
16
|
-
before_install:
|
17
|
-
- docker run -d -p 6379:6379 redislabs/redisearch:latest --protected-mode no --loadmodule /usr/lib/redis/modules/redisearch.so
|
18
|
-
after_script:
|
19
|
-
- if [[ "$TRAVIS_TEST_RESULT" == 0 ]]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
|
20
|
-
rvm:
|
21
|
-
- 2.6
|
22
|
-
- 2.5
|
23
|
-
gemfile:
|
24
|
-
- gemfiles/rails_6.gemfile
|
25
|
-
- gemfiles/rails_52.gemfile
|
26
|
-
- gemfiles/rails_51.gemfile
|
27
|
-
jobs:
|
28
|
-
include:
|
29
|
-
- stage: Lint
|
30
|
-
script: bundle exec rubocop --config=./.rubocop.yml
|
31
|
-
rvm: 2.6
|
data/bin/test
DELETED
data/lib/redi_search/add.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RediSearch
|
4
|
-
class Add
|
5
|
-
include ActiveModel::Validations
|
6
|
-
|
7
|
-
validates :score, numericality: {
|
8
|
-
greater_than_or_equal_to: 0.0, less_than_or_equal_to: 1.0
|
9
|
-
}
|
10
|
-
|
11
|
-
def initialize(index, document, score: 1.0, replace: {}, language: nil,
|
12
|
-
no_save: false)
|
13
|
-
@index = index
|
14
|
-
@document = document
|
15
|
-
@score = score || 1.0
|
16
|
-
@replace = replace
|
17
|
-
@language = language
|
18
|
-
@no_save = no_save
|
19
|
-
end
|
20
|
-
|
21
|
-
def call!
|
22
|
-
validate!
|
23
|
-
|
24
|
-
RediSearch.client.call!(*command).ok?
|
25
|
-
end
|
26
|
-
|
27
|
-
def call
|
28
|
-
call!
|
29
|
-
rescue Redis::CommandError
|
30
|
-
false
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
attr_reader :index, :document, :score, :replace, :language, :no_save
|
36
|
-
|
37
|
-
def command
|
38
|
-
["ADD", index.name, document.document_id, score, *extract_options,
|
39
|
-
"FIELDS", document.redis_attributes].compact
|
40
|
-
end
|
41
|
-
|
42
|
-
def extract_options
|
43
|
-
opts = []
|
44
|
-
opts << ["LANGUAGE", language] if language
|
45
|
-
opts << "NOSAVE" if no_save
|
46
|
-
opts << replace_options if replace?
|
47
|
-
opts
|
48
|
-
end
|
49
|
-
|
50
|
-
def replace?
|
51
|
-
replace.present?
|
52
|
-
end
|
53
|
-
|
54
|
-
def replace_options
|
55
|
-
["REPLACE"].tap do |replace_option|
|
56
|
-
if replace.is_a?(Hash)
|
57
|
-
replace_option << "PARTIAL" if replace[:partial]
|
58
|
-
# replace_option << "NOCREATE" if replace[:no_create]
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|