Skip to content

Commit a8d4ea6

Browse files
brunoocasalibidoubiwa
authored andcommitted
Create MultiSearch module
1 parent e658f7b commit a8d4ea6

File tree

5 files changed

+41
-7
lines changed

5 files changed

+41
-7
lines changed

lib/meilisearch.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'meilisearch/version'
44
require 'meilisearch/utils'
55
require 'meilisearch/http_request'
6+
require 'meilisearch/multi_search'
67
require 'meilisearch/tenant_token'
78
require 'meilisearch/task'
89
require 'meilisearch/client'

lib/meilisearch/client.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
module MeiliSearch
44
class Client < HTTPRequest
55
include MeiliSearch::TenantToken
6+
include MeiliSearch::MultiSearch
67

78
### INDEXES
89

lib/meilisearch/multi_search.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# frozen_string_literal: true
2+
3+
module MeiliSearch
4+
module MultiSearch
5+
def multi_search(data)
6+
body = Utils.transform_attributes(data)
7+
8+
http_post '/multi-search', queries: body
9+
end
10+
end
11+
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
RSpec.describe 'MeiliSearch::Client - Multiple Index Search' do
4+
before do
5+
client.create_index('books')
6+
task = client.create_index('movies')
7+
client.wait_for_task(task['taskUid'])
8+
end
9+
10+
it 'does a custom search with two different indexes' do
11+
response = client.multi_search([
12+
{ index_uid: 'books', q: 'prince' },
13+
{ index_uid: 'movies', q: 'prince' }
14+
])
15+
16+
expect(response['results'].count).to eq(2)
17+
expect(response['results'][0]['estimatedTotalHits']).to eq(0)
18+
expect(response['results'][1]['estimatedTotalHits']).to eq(0)
19+
end
20+
end

spec/meilisearch/utils_spec.rb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,19 @@
2424
describe '.transform_attributes' do
2525
it 'transforms snake_case into camelCased keys' do
2626
data = described_class.transform_attributes({
27-
index_name: 'books',
28-
my_UID: '123'
29-
})
27+
index_name: 'books',
28+
my_UID: '123'
29+
})
3030

3131
expect(data).to eq({ 'indexName' => 'books', 'myUid' => '123' })
3232
end
3333

3434
it 'transforms snake_case into camel cased keys from array' do
35-
data = described_class.transform_attributes([
36-
{ index_uid: 'books', q: 'prince' },
37-
{ index_uid: 'movies', q: 'prince' }
38-
])
35+
data = described_class
36+
.transform_attributes([
37+
{ index_uid: 'books', q: 'prince' },
38+
{ index_uid: 'movies', q: 'prince' }
39+
])
3940

4041
expect(data).to eq(
4142
[

0 commit comments

Comments
 (0)