meilisearch 0.13.2 → 0.15.2

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: 1a404b36eefbf9a36bae33b1d5b93254f7b88c7a99eac6ad958f746f914dac1e
4
- data.tar.gz: bdd20fa28ebd8ccad0decd303c3e18eb59cb2d6176719235f82cc994ff75d75b
3
+ metadata.gz: f1a2bd63d9c8d081f0c4f9402f754fcd710b57a1e362aec937976b97bc2a7d32
4
+ data.tar.gz: c438bda2666f88704c58b0ced8c55803211848bd7a26ccf0059db36b29a860b7
5
5
  SHA512:
6
- metadata.gz: 1bef203c596fea8974c0d45b9ebe1ad4b7d6239db39d57dabba57f25956a684d068e6297d5d7bb6115030be11d61b7fa461877d53c8e6d52e4926166a37b5290
7
- data.tar.gz: 0540e59b6bafdd7c1c34c8afbfc0ccf930c0dfb020f69dfda9e9df7674c81e8da9fadbd0c3aebbe28ad19370cfe17bf4f0fffc378a479b95df18e9343b086861
6
+ metadata.gz: 31339aea14f0be79d11aaac5b9c4b278a6a87201c291ba50608888339dff7e94730d9d2f6201967fac7ea7a6ce9e05da7418f964481c37bb00f875a22d1dd51e
7
+ data.tar.gz: 78c68477abafc1b5391fb4b5f527d71acf6b3fa3daf0d71855d595bcbc023338c152af37744b5f7c74126cc8d684b5ac0548a08a7021dc830f078ec734f8919f
@@ -10,26 +10,24 @@ module MeiliSearch
10
10
  http_get '/indexes'
11
11
  end
12
12
 
13
- def show_index(index_uid)
14
- index_object(index_uid).show
15
- end
16
-
17
13
  # Usage:
18
14
  # client.create_index('indexUID')
19
15
  # client.create_index('indexUID', primaryKey: 'id')
20
16
  def create_index(index_uid, options = {})
21
17
  body = options.merge(uid: index_uid)
22
- res = http_post '/indexes', body
23
- index_object(res['uid'])
18
+ index_hash = http_post '/indexes', body
19
+ index_object(index_hash['uid'], index_hash['primaryKey'])
24
20
  end
25
21
 
26
22
  def get_or_create_index(index_uid, options = {})
27
23
  begin
28
- create_index(index_uid, options)
24
+ index_instance = fetch_index(index_uid)
29
25
  rescue ApiError => e
30
- raise e unless e.code == 'index_already_exists'
26
+ raise e unless e.code == 'index_not_found'
27
+
28
+ index_instance = create_index(index_uid, options)
31
29
  end
32
- index_object(index_uid)
30
+ index_instance
33
31
  end
34
32
 
35
33
  def delete_index(index_uid)
@@ -41,7 +39,10 @@ module MeiliSearch
41
39
  def index(index_uid)
42
40
  index_object(index_uid)
43
41
  end
44
- alias get_index index
42
+
43
+ def fetch_index(index_uid)
44
+ index_object(index_uid).fetch_info
45
+ end
45
46
 
46
47
  ### KEYS
47
48
 
@@ -63,10 +64,6 @@ module MeiliSearch
63
64
  http_get '/health'
64
65
  end
65
66
 
66
- def update_health(bool)
67
- http_put '/health', health: bool
68
- end
69
-
70
67
  ### STATS
71
68
 
72
69
  def version
@@ -77,10 +74,21 @@ module MeiliSearch
77
74
  http_get '/stats'
78
75
  end
79
76
 
77
+ ### DUMPS
78
+
79
+ def create_dump
80
+ http_post '/dumps'
81
+ end
82
+
83
+ def dump_status(dump_uid)
84
+ http_get "/dumps/#{dump_uid}/status"
85
+ end
86
+ alias get_dump_status dump_status
87
+
80
88
  private
81
89
 
82
- def index_object(uid)
83
- Index.new(uid, @base_url, @api_key)
90
+ def index_object(uid, primary_key = nil)
91
+ Index.new(uid, @base_url, @api_key, primary_key)
84
92
  end
85
93
  end
86
94
  end
@@ -2,14 +2,16 @@
2
2
 
3
3
  module MeiliSearch
4
4
  class ApiError < StandardError
5
- attr_reader :http_code # e.g. 400, 404...
6
- attr_reader :http_message # e.g. Bad Request, Not Found...
7
- attr_reader :http_body # The response body received from the MeiliSearch API
8
- attr_reader :ms_code # The error code given by the MeiliSearch API
9
- attr_reader :ms_type # The error type given by the MeiliSearch API
10
- attr_reader :ms_link # The documentation link given by the MeiliSearch API
11
- attr_reader :ms_message # The error message given by the MeiliSearch API
12
- attr_reader :message # The detailed error message of this error class
5
+ # :http_code # e.g. 400, 404...
6
+ # :http_message # e.g. Bad Request, Not Found...
7
+ # :http_body # The response body received from the MeiliSearch API
8
+ # :ms_code # The error code given by the MeiliSearch API
9
+ # :ms_type # The error type given by the MeiliSearch API
10
+ # :ms_link # The documentation link given by the MeiliSearch API
11
+ # :ms_message # The error message given by the MeiliSearch API
12
+ # :message # The detailed error message of this error class
13
+
14
+ attr_reader :http_code, :http_message, :http_body, :ms_code, :ms_type, :ms_link, :ms_message, :message
13
15
 
14
16
  alias code ms_code
15
17
  alias type ms_type
@@ -7,9 +7,10 @@ module MeiliSearch
7
7
  class HTTPRequest
8
8
  include HTTParty
9
9
 
10
- def initialize(url, api_key = nil)
10
+ def initialize(url, api_key = nil, options = {})
11
11
  @base_url = url
12
12
  @api_key = api_key
13
+ @options = options
13
14
  @headers = {
14
15
  'Content-Type' => 'application/json',
15
16
  'X-Meili-API-Key' => api_key
@@ -62,12 +63,13 @@ module MeiliSearch
62
63
  end
63
64
 
64
65
  def http_config(query_params, body)
65
- body = body.to_json unless body.nil?
66
+ body = body.to_json
66
67
  {
67
68
  headers: @headers,
68
69
  query: query_params,
69
70
  body: body,
70
- timeout: 1
71
+ timeout: @options[:timeout] || 1,
72
+ max_retries: @options[:max_retries] || 0
71
73
  }.compact
72
74
  end
73
75
 
@@ -5,20 +5,24 @@ require 'timeout'
5
5
 
6
6
  module MeiliSearch
7
7
  class Index < HTTPRequest
8
- attr_reader :uid
8
+ attr_reader :uid, :primary_key
9
9
 
10
- def initialize(index_uid, url, api_key = nil)
10
+ def initialize(index_uid, url, api_key = nil, primary_key = nil)
11
11
  @uid = index_uid
12
+ @primary_key = primary_key
12
13
  super(url, api_key)
13
14
  end
14
15
 
15
- def show
16
- http_get "/indexes/#{@uid}"
16
+ def fetch_info
17
+ index_hash = http_get "/indexes/#{@uid}"
18
+ @primary_key = index_hash['primaryKey']
19
+ self
17
20
  end
18
- alias show_index show
19
21
 
20
22
  def update(body)
21
- http_put "/indexes/#{@uid}", body
23
+ index_hash = http_put "/indexes/#{@uid}", body
24
+ @primary_key = index_hash['primaryKey']
25
+ self
22
26
  end
23
27
  alias update_index update
24
28
 
@@ -27,10 +31,10 @@ module MeiliSearch
27
31
  end
28
32
  alias delete_index delete
29
33
 
30
- def primary_key
31
- show['primaryKey']
34
+ def fetch_primary_key
35
+ fetch_info.primary_key
32
36
  end
33
- alias get_primary_key primary_key
37
+ alias get_primary_key fetch_primary_key
34
38
 
35
39
  ### DOCUMENTS
36
40
 
@@ -53,12 +57,25 @@ module MeiliSearch
53
57
  alias replace_documents add_documents
54
58
  alias add_or_replace_documents add_documents
55
59
 
60
+ def add_documents!(documents, primary_key = nil)
61
+ update = add_documents(documents, primary_key)
62
+ wait_for_pending_update(update['updateId'])
63
+ end
64
+ alias replace_documents! add_documents!
65
+ alias add_or_replace_documents! add_documents!
66
+
56
67
  def update_documents(documents, primary_key = nil)
57
68
  documents = [documents] if documents.is_a?(Hash)
58
69
  http_put "/indexes/#{@uid}/documents", documents, { primaryKey: primary_key }.compact
59
70
  end
60
71
  alias add_or_update_documents update_documents
61
72
 
73
+ def update_documents!(documents, primary_key = nil)
74
+ update = update_documents(documents, primary_key)
75
+ wait_for_pending_update(update['updateId'])
76
+ end
77
+ alias add_or_update_documents! update_documents!
78
+
62
79
  def delete_documents(documents_ids)
63
80
  if documents_ids.is_a?(Array)
64
81
  http_post "/indexes/#{@uid}/documents/delete-batch", documents_ids
@@ -68,16 +85,33 @@ module MeiliSearch
68
85
  end
69
86
  alias delete_multiple_documents delete_documents
70
87
 
88
+ def delete_documents!(documents_ids)
89
+ update = delete_documents(documents_ids)
90
+ wait_for_pending_update(update['updateId'])
91
+ end
92
+ alias delete_multiple_documents! delete_documents!
93
+
71
94
  def delete_document(document_id)
72
95
  encode_document = URI.encode_www_form_component(document_id)
73
96
  http_delete "/indexes/#{@uid}/documents/#{encode_document}"
74
97
  end
75
98
  alias delete_one_document delete_document
76
99
 
100
+ def delete_document!(document_id)
101
+ update = delete_document(document_id)
102
+ wait_for_pending_update(update['updateId'])
103
+ end
104
+ alias delete_one_document! delete_document!
105
+
77
106
  def delete_all_documents
78
107
  http_delete "/indexes/#{@uid}/documents"
79
108
  end
80
109
 
110
+ def delete_all_documents!
111
+ update = delete_all_documents
112
+ wait_for_pending_update(update['updateId'])
113
+ end
114
+
81
115
  ### SEARCH
82
116
 
83
117
  def search(query, options = {})
@@ -140,6 +174,7 @@ module MeiliSearch
140
174
  def update_settings(settings)
141
175
  http_post "/indexes/#{@uid}/settings", settings
142
176
  end
177
+ alias settings= update_settings
143
178
 
144
179
  def reset_settings
145
180
  http_delete "/indexes/#{@uid}/settings"
@@ -155,6 +190,7 @@ module MeiliSearch
155
190
  def update_ranking_rules(ranking_rules)
156
191
  http_post "/indexes/#{@uid}/settings/ranking-rules", ranking_rules
157
192
  end
193
+ alias ranking_rules= update_ranking_rules
158
194
 
159
195
  def reset_ranking_rules
160
196
  http_delete "/indexes/#{@uid}/settings/ranking-rules"
@@ -170,6 +206,7 @@ module MeiliSearch
170
206
  def update_synonyms(synonyms)
171
207
  http_post "/indexes/#{@uid}/settings/synonyms", synonyms
172
208
  end
209
+ alias synonyms= update_synonyms
173
210
 
174
211
  def reset_synonyms
175
212
  http_delete "/indexes/#{@uid}/settings/synonyms"
@@ -186,6 +223,7 @@ module MeiliSearch
186
223
  body = stop_words.is_a?(Array) ? stop_words : [stop_words]
187
224
  http_post "/indexes/#{@uid}/settings/stop-words", body
188
225
  end
226
+ alias stop_words= update_stop_words
189
227
 
190
228
  def reset_stop_words
191
229
  http_delete "/indexes/#{@uid}/settings/stop-words"
@@ -201,6 +239,7 @@ module MeiliSearch
201
239
  def update_distinct_attribute(distinct_attribute)
202
240
  http_post "/indexes/#{@uid}/settings/distinct-attribute", distinct_attribute
203
241
  end
242
+ alias distinct_attribute= update_distinct_attribute
204
243
 
205
244
  def reset_distinct_attribute
206
245
  http_delete "/indexes/#{@uid}/settings/distinct-attribute"
@@ -216,6 +255,7 @@ module MeiliSearch
216
255
  def update_searchable_attributes(searchable_attributes)
217
256
  http_post "/indexes/#{@uid}/settings/searchable-attributes", searchable_attributes
218
257
  end
258
+ alias searchable_attributes= update_searchable_attributes
219
259
 
220
260
  def reset_searchable_attributes
221
261
  http_delete "/indexes/#{@uid}/settings/searchable-attributes"
@@ -231,6 +271,7 @@ module MeiliSearch
231
271
  def update_displayed_attributes(displayed_attributes)
232
272
  http_post "/indexes/#{@uid}/settings/displayed-attributes", displayed_attributes
233
273
  end
274
+ alias displayed_attributes= update_displayed_attributes
234
275
 
235
276
  def reset_displayed_attributes
236
277
  http_delete "/indexes/#{@uid}/settings/displayed-attributes"
@@ -246,6 +287,7 @@ module MeiliSearch
246
287
  def update_attributes_for_faceting(attributes_for_faceting)
247
288
  http_post "/indexes/#{@uid}/settings/attributes-for-faceting", attributes_for_faceting
248
289
  end
290
+ alias attributes_for_faceting= update_attributes_for_faceting
249
291
 
250
292
  def reset_attributes_for_faceting
251
293
  http_delete "/indexes/#{@uid}/settings/attributes-for-faceting"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MeiliSearch
4
- VERSION = '0.13.2'
4
+ VERSION = '0.15.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meilisearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.2
4
+ version: 0.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Meili
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-01 00:00:00.000000000 Z
11
+ date: 2021-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -54,14 +54,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: '0'
57
+ version: 2.6.0
58
58
  required_rubygems_version: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  requirements: []
64
- rubygems_version: 3.0.3
64
+ rubygems_version: 3.0.3.1
65
65
  signing_key:
66
66
  specification_version: 4
67
67
  summary: An easy-to-use ruby client for Meilisearch API