Skip to content
This repository was archived by the owner on Jul 31, 2018. It is now read-only.

Commit ac92755

Browse files
author
maxiloc
authored
Merge pull request #81 from algolia/slaves-replicas-renaming
Change slaves to replicas
2 parents 0a1e571 + b3502e9 commit ac92755

File tree

6 files changed

+88
-22
lines changed

6 files changed

+88
-22
lines changed

README.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This PHP package integrates the Algolia Search API to the Laravel Eloquent ORM.
2020
4. [Ranking & Relevance](#ranking--relevance)
2121
5. [Options](#options)
2222
6. [Indexing](#indexing)
23-
7. [Master/Slave](#masterslave)
23+
7. [Primary/Replica](#primaryreplica)
2424
8. [Target multiple indexes](#target-multiple-indexes)
2525

2626
<!--/NO_HTML-->
@@ -123,7 +123,7 @@ Contact::setSettings();
123123

124124
Synonyms are used to tell the engine about words or expressions that should be considered equal in regard to the textual relevance.
125125

126-
Our [synonyms API](https://www.algolia.com/doc/relevance/synonyms) has been designed to manage as easily as possible a large set of synonyms for an index and its slaves.
126+
Our [synonyms API](https://www.algolia.com/doc/relevance/synonyms) has been designed to manage as easily as possible a large set of synonyms for an index and its replicas.
127127

128128
You can use the synonyms API by adding a `synonyms` in `$algoliaSettings` class property like this:
129129

@@ -393,9 +393,9 @@ Contact::clearIndices();
393393

394394
## Manage indices
395395

396-
### Master/Slave
396+
### Primary/Replica
397397

398-
You can define slave indexes using the `$algolia_settings` variable:
398+
You can define replica indexes using the `$algolia_settings` variable:
399399

400400
```php
401401
use Illuminate\Database\Eloquent\Model;
@@ -413,12 +413,12 @@ class Contact extends Model
413413
'desc(popularity)',
414414
'asc(name)',
415415
],
416-
'slaves' => [
416+
'replicas' => [
417417
'contacts_desc',
418418
],
419419
];
420420

421-
public $slavesSettings = [
421+
public $replicasSettings = [
422422
'contacts_desc' => [
423423
'ranking' => [
424424
'desc(name)',
@@ -435,7 +435,7 @@ class Contact extends Model
435435
}
436436
```
437437

438-
To search using a slave use the following code:
438+
To search using a replica use the following code:
439439

440440
```php
441441
Book::search('foo bar', ['index' => 'contacts_desc']);

src/AlgoliaEloquentTrait.php

+22-8
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,25 @@ public function _setSettings($setToTmpIndices = false)
156156
$indices = $modelHelper->getIndicesTmp($this);
157157
}
158158

159-
$slaves_settings = $modelHelper->getSlavesSettings($this);
160-
$slaves = isset($settings['slaves']) ? $settings['slaves'] : [];
159+
$replicas_settings = $modelHelper->getReplicasSettings($this);
160+
$replicas = isset($settings['replicas']) ? $settings['replicas'] : [];
161+
162+
// Backward compatibility
163+
if ($replicas === [] && isset($settings['slaves'])) {
164+
$replicas = $settings['slaves'];
165+
}
161166

162167
$b = true;
163168

164169
/** @var \AlgoliaSearch\Index $index */
165170
foreach ($indices as $index) {
166171

167-
if ($b && isset($settings['slaves'])) {
172+
if ($b && isset($settings['replicas'])) {
173+
$settings['replicas'] = array_map(function ($indexName) use ($modelHelper) {
174+
return $modelHelper->getFinalIndexName($this, $indexName);
175+
}, $settings['replicas']);
176+
} elseif ($b && isset($settings['slaves'])) {
177+
// Backward compatibility
168178
$settings['slaves'] = array_map(function ($indexName) use ($modelHelper) {
169179
return $modelHelper->getFinalIndexName($this, $indexName);
170180
}, $settings['slaves']);
@@ -187,17 +197,21 @@ public function _setSettings($setToTmpIndices = false)
187197
$index->setSettings($settingsWithoutSynonyms);
188198
}
189199

190-
if ($b && isset($settings['slaves'])) {
200+
if ($b && isset($settings['replicas'])) {
201+
$b = false;
202+
unset($settings['replicas']);
203+
} else if ($b && isset($settings['slaves'])) {
204+
// Backward compatibility
191205
$b = false;
192206
unset($settings['slaves']);
193207
}
194208
}
195209

196-
foreach ($slaves as $slave) {
197-
if (isset($slaves_settings[$slave])) {
198-
$index = $modelHelper->getIndices($this, $slave)[0];
210+
foreach ($replicas as $replica) {
211+
if (isset($replicas_settings[$replica])) {
212+
$index = $modelHelper->getIndices($this, $replica)[0];
199213

200-
$s = array_merge($settings, $slaves_settings[$slave]);
214+
$s = array_merge($settings, $replicas_settings[$replica]);
201215
unset($s['synonyms']);
202216

203217
if (count(array_keys($s)) > 0)

src/ModelHelper.php

+15-1
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,23 @@ public function getSettings(Model $model)
8080
return property_exists($model, 'algoliaSettings') ? $model->algoliaSettings : [];
8181
}
8282

83+
public function getReplicasSettings(Model $model)
84+
{
85+
$replicas_settings = property_exists($model, 'replicasSettings') ? $model->replicasSettings : [];
86+
87+
// Backward compatibility
88+
if ($replicas_settings === [] && property_exists($model, 'slavesSettings')) {
89+
$replicas_settings = $model->slavesSettings;
90+
}
91+
92+
return $replicas_settings;
93+
}
94+
8395
public function getSlavesSettings(Model $model)
8496
{
85-
return property_exists($model, 'slavesSettings') ? $model->slavesSettings : [];
97+
trigger_error("getSlavesSettings was renamed to getReplicasSettings", E_USER_DEPRECATED);
98+
99+
return $this->getReplicasSettings($model);
86100
}
87101

88102
public function getFinalIndexName(Model $model, $indexName)

tests/AlgoliaEloquentTraitTest.php

+15-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace AlgoliaSearch\Tests;
44

55
use AlgoliaSearch\Tests\Models\Model11;
6+
use AlgoliaSearch\Tests\Models\Model12;
67
use AlgoliaSearch\Tests\Models\Model2;
78
use AlgoliaSearch\Tests\Models\Model4;
89
use AlgoliaSearch\Tests\Models\Model6;
@@ -68,7 +69,7 @@ public function testRemoveFromIndex()
6869
public function testSetSettings()
6970
{
7071
$index = Mockery::mock('\AlgoliaSearch\Index');
71-
$index->shouldReceive('setSettings')->with(['slaves' => ['model_6_desc_testing']]);
72+
$index->shouldReceive('setSettings')->with(['replicas' => ['model_6_desc_testing']]);
7273
$index->shouldReceive('setSettings')->with(['ranking' => ['desc(name)']]);
7374
$index->shouldReceive('clearSynonyms');
7475

@@ -82,11 +83,21 @@ public function testSetSettings()
8283
$modelHelper->shouldReceive('getSettings')->andReturn($realModelHelper->getSettings($model6));
8384
$modelHelper->shouldReceive('getIndices')->andReturn([$index]);
8485
$modelHelper->shouldReceive('getFinalIndexName')->andReturn($realModelHelper->getFinalIndexName($model6, 'model_6_desc'));
85-
$modelHelper->shouldReceive('getSlavesSettings')->andReturn($realModelHelper->getSlavesSettings($model6));
86+
$modelHelper->shouldReceive('getReplicasSettings')->andReturn($realModelHelper->getReplicasSettings($model6));
8687

87-
$this->assertEquals($modelHelper->getFinalIndexName($model6, $realModelHelper->getSettings($model6)['slaves'][0]), 'model_6_desc_testing');
88+
$this->assertEquals($modelHelper->getFinalIndexName($model6, $realModelHelper->getSettings($model6)['replicas'][0]), 'model_6_desc_testing');
8889

8990
$model6->setSettings();
91+
92+
$model12 = new Model12();
93+
$modelHelper->shouldReceive('getSettings')->andReturn($realModelHelper->getSettings($model12));
94+
$modelHelper->shouldReceive('getIndices')->andReturn([$index]);
95+
$modelHelper->shouldReceive('getFinalIndexName')->andReturn($realModelHelper->getFinalIndexName($model12, 'model_6_desc'));
96+
$modelHelper->shouldReceive('getReplicasSettings')->andReturn($realModelHelper->getReplicasSettings($model12));
97+
98+
$this->assertEquals($modelHelper->getFinalIndexName($model12, $realModelHelper->getSettings($model12)['slaves'][0]), 'model_6_desc_testing');
99+
100+
$model12->setSettings();
90101
}
91102

92103
public function testSetSynonyms()
@@ -116,7 +127,7 @@ public function testSetSynonyms()
116127
$model10 = new Model10();
117128
$modelHelper->shouldReceive('getSettings')->andReturn($realModelHelper->getSettings($model10));
118129
$modelHelper->shouldReceive('getIndices')->andReturn([$index]);
119-
$modelHelper->shouldReceive('getSlavesSettings')->andReturn($realModelHelper->getSlavesSettings($model10));
130+
$modelHelper->shouldReceive('getReplicasSettings')->andReturn($realModelHelper->getReplicasSettings($model10));
120131

121132
$this->assertEquals(null, $model10->setSettings());
122133
}

tests/Models/Model12.php

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace AlgoliaSearch\Tests\Models;
4+
5+
use AlgoliaSearch\Laravel\AlgoliaEloquentTrait;
6+
use Illuminate\Database\Eloquent\Model;
7+
8+
class Model12 extends Model
9+
{
10+
use AlgoliaEloquentTrait;
11+
12+
public static $perEnvironment = true;
13+
14+
public $algoliaSettings = [
15+
'slaves' => [
16+
'model_6_desc',
17+
],
18+
];
19+
20+
public $slavesSettings = [
21+
'model_6_desc' => [
22+
'ranking' => [
23+
'desc(name)'
24+
]
25+
]
26+
];
27+
}

tests/Models/Model6.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ class Model6 extends Model
1212
public static $perEnvironment = true;
1313

1414
public $algoliaSettings = [
15-
'slaves' => [
15+
'replicas' => [
1616
'model_6_desc',
1717
],
1818
];
1919

20-
public $slavesSettings = [
20+
public $replicasSettings = [
2121
'model_6_desc' => [
2222
'ranking' => [
2323
'desc(name)'

0 commit comments

Comments
 (0)