diff --git a/.travis.yml b/.travis.yml index a322123..3466487 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,8 @@ php: - 7.2 env: + global: + - "ELASTICSEARCH_PORT=9200" matrix: - "ES_VERSION=6.0.0 ES_DOWNLOAD_URL=https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.deb" - "ES_VERSION=6.1.0 ES_DOWNLOAD_URL=https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.0.deb" diff --git a/docker-compose.yml b/docker-compose.yml index 1f9aaa4..c4c3650 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,13 +6,13 @@ services: environment: - cluster.name=test-cluster - bootstrap.memory_lock=true - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" ulimits: memlock: soft: -1 hard: -1 ports: - - 9200:9200 + - 9222:9200 networks: default: diff --git a/src/Business/Repository/ElasticsearchMigrations.php b/src/Business/Repository/ElasticsearchMigrations.php index af338ef..e2edb4f 100644 --- a/src/Business/Repository/ElasticsearchMigrations.php +++ b/src/Business/Repository/ElasticsearchMigrations.php @@ -14,6 +14,7 @@ public function create( string $index ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrations { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrations(); + $dbMigration->migration_id = $migrationId; $dbMigration->type = $type; $dbMigration->index = $index; diff --git a/src/Business/Repository/ElasticsearchMigrationsAlias.php b/src/Business/Repository/ElasticsearchMigrationsAlias.php index 301cbba..3e432c7 100644 --- a/src/Business/Repository/ElasticsearchMigrationsAlias.php +++ b/src/Business/Repository/ElasticsearchMigrationsAlias.php @@ -15,6 +15,7 @@ public function create( array $removeIndices = [] ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsAlias { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsAlias(); + $dbMigration->migrations_id = $migrationsId; $dbMigration->add = json_encode($add); $dbMigration->remove = json_encode($remove); diff --git a/src/Business/Repository/ElasticsearchMigrationsCreateIndex.php b/src/Business/Repository/ElasticsearchMigrationsCreateIndex.php index e000f18..76afbdd 100644 --- a/src/Business/Repository/ElasticsearchMigrationsCreateIndex.php +++ b/src/Business/Repository/ElasticsearchMigrationsCreateIndex.php @@ -14,6 +14,7 @@ public function create( ?array $settings = null ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsCreateIndex { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsCreateIndex(); + $dbMigration->migrations_id = $migrationsId; $dbMigration->mappings = json_encode($mappings); diff --git a/src/Business/Repository/ElasticsearchMigrationsDeleteByQuery.php b/src/Business/Repository/ElasticsearchMigrationsDeleteByQuery.php index 7602503..d03226f 100644 --- a/src/Business/Repository/ElasticsearchMigrationsDeleteByQuery.php +++ b/src/Business/Repository/ElasticsearchMigrationsDeleteByQuery.php @@ -15,6 +15,7 @@ public function create( array $options = [] ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsDeleteByQuery { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsDeleteByQuery(); + $dbMigration->migrations_id = $migrationsId; $dbMigration->query = json_encode($query); $dbMigration->type = $type; diff --git a/src/Business/Repository/ElasticsearchMigrationsReindex.php b/src/Business/Repository/ElasticsearchMigrationsReindex.php index 4d04e96..7e82792 100644 --- a/src/Business/Repository/ElasticsearchMigrationsReindex.php +++ b/src/Business/Repository/ElasticsearchMigrationsReindex.php @@ -17,6 +17,7 @@ public function create( array $dest = [] ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsReindex { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsReindex(); + $dbMigration->migrations_id = $migrationsId; $dbMigration->dest_index = $destIndex; $dbMigration->refresh_source_index = $refreshSourceIndex; diff --git a/src/Business/Repository/ElasticsearchMigrationsUpdateByQuery.php b/src/Business/Repository/ElasticsearchMigrationsUpdateByQuery.php index 4f9ff7f..d206054 100644 --- a/src/Business/Repository/ElasticsearchMigrationsUpdateByQuery.php +++ b/src/Business/Repository/ElasticsearchMigrationsUpdateByQuery.php @@ -16,6 +16,7 @@ public function create( array $options = [] ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateByQuery { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateByQuery(); + $dbMigration->migrations_id = $migrationsId; $dbMigration->query = json_encode($query); $dbMigration->type = $type; diff --git a/src/Business/Repository/ElasticsearchMigrationsUpdateIndex.php b/src/Business/Repository/ElasticsearchMigrationsUpdateIndex.php index 10529ad..317a1dc 100644 --- a/src/Business/Repository/ElasticsearchMigrationsUpdateIndex.php +++ b/src/Business/Repository/ElasticsearchMigrationsUpdateIndex.php @@ -15,6 +15,7 @@ public function create( bool $closeIndex = false ): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateIndex { $dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateIndex(); + $dbMigration->migrations_id = $migrationsId; $dbMigration->close_index = $closeIndex; diff --git a/src/Contract/ElasticsearchMigrationDatabaseContract.php b/src/Contract/ElasticsearchMigrationDatabaseContract.php index 4b35947..6ec84cf 100644 --- a/src/Contract/ElasticsearchMigrationDatabaseContract.php +++ b/src/Contract/ElasticsearchMigrationDatabaseContract.php @@ -3,6 +3,14 @@ interface ElasticsearchMigrationDatabaseContract { + const MIGRATION_TYPE_CREATE_INDEX = 'createIndex'; + const MIGRATION_TYPE_UPDATE_INDEX = 'updateIndex'; + const MIGRATION_TYPE_DELETE_INDEX = 'deleteIndex'; + const MIGRATION_TYPE_ALIAS = 'alias'; + const MIGRATION_TYPE_DELETE_BY_QUERY = 'deleteByQuery'; + const MIGRATION_TYPE_UPDATE_BY_QUERY = 'updateByQuery'; + const MIGRATION_TYPE_REINDEX = 'reindex'; + /** * Create migration * diff --git a/src/ElasticsearchMigration.php b/src/ElasticsearchMigration.php index 1f30210..3d0c829 100644 --- a/src/ElasticsearchMigration.php +++ b/src/ElasticsearchMigration.php @@ -71,7 +71,7 @@ private function buildElasticsearchClient() : Client public function migrate(string $version, string $source = 'file') { $migration = $this->migrationRepository->find($version); - if ($migration && $migration->getAttribute('status') == 'done') { + if ($migration && $migration->status == 'done') { throw new MigrationAlreadyDone(); } diff --git a/src/ElasticsearchMigrationDatabase.php b/src/ElasticsearchMigrationDatabase.php index 46eeeb9..d42b912 100644 --- a/src/ElasticsearchMigrationDatabase.php +++ b/src/ElasticsearchMigrationDatabase.php @@ -27,6 +27,11 @@ class ElasticsearchMigrationDatabase implements ElasticsearchMigrationDatabaseCo /** @var ElasticsearchMigrationsContract */ private $elasticsearchMigrationsRepository; + /** + * ElasticsearchMigrationDatabase constructor. + * @param ElasticsearchMigrationContract $elasticsearchMigrationRepository + * @param ElasticsearchMigrationsContract $elasticsearchMigrationsRepository + */ public function __construct( ElasticsearchMigrationContract $elasticsearchMigrationRepository, ElasticsearchMigrationsContract $elasticsearchMigrationsRepository @@ -61,32 +66,32 @@ public function addMigration(string $migration, string $type, string $index, arr try { $migrations = $this->elasticsearchMigrationsRepository->create( - $dbMigration->getAttribute('id'), + $dbMigration->id, $type, $index ); - $migrationsId = $migrations->getAttribute('id'); + $migrationsId = $migrations->id; switch ($type) { - case 'createIndex': + case self::MIGRATION_TYPE_CREATE_INDEX: $this->createIndexMigration($migrationsId, $params); break; - case 'updateIndex': + case self::MIGRATION_TYPE_UPDATE_INDEX: $this->updateIndexMigration($migrationsId, $params); break; - case 'deleteIndex': + case self::MIGRATION_TYPE_DELETE_INDEX: break; - case 'alias': + case self::MIGRATION_TYPE_ALIAS: $this->aliasMigration($migrationsId, $params); break; - case 'deleteByQuery': + case self::MIGRATION_TYPE_DELETE_BY_QUERY: $this->deleteByQueryMigration($migrationsId, $params); break; - case 'updateByQuery': + case self::MIGRATION_TYPE_UPDATE_BY_QUERY: $this->updateByQueryMigration($migrationsId, $params); break; - case 'reindex': + case self::MIGRATION_TYPE_REINDEX: $this->reindexMigration($migrationsId, $params); break; default: @@ -116,24 +121,24 @@ public function getMigration(string $migration) : array if ($migrationByType) { $migrationByType = is_object($migrationByType) ? $migrationByType->first() : $migrationByType; - $index = $dbMigration->getAttribute('index'); + $index = $dbMigration->index; - switch ($dbMigration->getAttribute('type')) { - case 'createIndex': + switch ($dbMigration->type) { + case self::MIGRATION_TYPE_CREATE_INDEX: if ($migrationByType instanceof ElasticsearchMigrationsCreateIndex) { - $settings = $migrationByType->getAttribute('settings'); + $settings = $migrationByType->settings; $migrations[] = MigrationBuilder::createIndex( $index, - json_decode($migrationByType->getAttribute('mappings'), true), + json_decode($migrationByType->mappings, true), $settings != null ? json_decode($settings, true) : null ); } break; - case 'updateIndex': + case self::MIGRATION_TYPE_UPDATE_INDEX: if ($migrationByType instanceof ElasticsearchMigrationsUpdateIndex) { - $mappings = $migrationByType->getAttribute('mappings'); - $settings = $migrationByType->getAttribute('settings'); + $mappings = $migrationByType->mappings; + $settings = $migrationByType->settings; $migrations[] = MigrationBuilder::updateIndex( $index, @@ -143,14 +148,14 @@ public function getMigration(string $migration) : array ); } break; - case 'deleteIndex': + case self::MIGRATION_TYPE_DELETE_INDEX: $migrations[] = MigrationBuilder::deleteIndex($index); break; - case 'alias': + case self::MIGRATION_TYPE_ALIAS: if ($migrationByType instanceof ElasticsearchMigrationsAlias) { - $add = $migrationByType->getAttribute('add'); - $remove = $migrationByType->getAttribute('remove'); - $removeIndices = $migrationByType->getAttribute('remove_indices'); + $add = $migrationByType->add; + $remove = $migrationByType->remove; + $removeIndices = $migrationByType->remove_indices; $migrations[] = MigrationBuilder::alias( $index, @@ -160,38 +165,38 @@ public function getMigration(string $migration) : array ); } break; - case 'deleteByQuery': + case self::MIGRATION_TYPE_DELETE_BY_QUERY: if ($migrationByType instanceof ElasticsearchMigrationsDeleteByQuery) { $migrations[] = MigrationBuilder::deleteByQuery( $index, - json_decode($migrationByType->getAttribute('query'), true), - $migrationByType->getAttribute('type'), - json_decode($migrationByType->getAttribute('options'), true) + json_decode($migrationByType->query, true), + $migrationByType->type, + json_decode($migrationByType->options, true) ); } break; - case 'updateByQuery': + case self::MIGRATION_TYPE_UPDATE_BY_QUERY: if ($migrationByType instanceof ElasticsearchMigrationsUpdateByQuery) { - $script = $migrationByType->getAttribute('script'); + $script = $migrationByType->script; $migrations[] = MigrationBuilder::updateByQuery( $index, - json_decode($migrationByType->getAttribute('query'), true), - $migrationByType->getAttribute('type'), + json_decode($migrationByType->query, true), + $migrationByType->type, $script != null ? json_decode($script, true) : null, - json_decode($migrationByType->getAttribute('options'), true) + json_decode($migrationByType->options, true) ); } break; - case 'reindex': + case self::MIGRATION_TYPE_REINDEX: if ($migrationByType instanceof ElasticsearchMigrationsReindex) { $migrations[] = MigrationBuilder::reindex( $index, - $migrationByType->getAttribute('dest_index'), - (bool)$migrationByType->getAttribute('refresh_source_index'), - json_decode($migrationByType->getAttribute('global'), true), - json_decode($migrationByType->getAttribute('source'), true), - json_decode($migrationByType->getAttribute('dest'), true) + $migrationByType->dest_index, + (bool)$migrationByType->refresh_source_index, + json_decode($migrationByType->global, true), + json_decode($migrationByType->source, true), + json_decode($migrationByType->dest, true) ); } break; @@ -205,6 +210,11 @@ public function getMigration(string $migration) : array return $migrations; } + /** + * @param int $migrationsId + * @param array $params + * @throws \Throwable + */ private function createIndexMigration(int $migrationsId, array $params) { /** @var ElasticsearchMigrationsCreateIndexContract $repository */ @@ -217,6 +227,11 @@ private function createIndexMigration(int $migrationsId, array $params) ); } + /** + * @param int $migrationsId + * @param array $params + * @throws \Throwable + */ private function updateIndexMigration(int $migrationsId, array $params) { /** @var ElasticsearchMigrationsUpdateIndexContract $repository */ @@ -235,6 +250,11 @@ private function updateIndexMigration(int $migrationsId, array $params) ); } + /** + * @param int $migrationsId + * @param array $params + * @throws \Throwable + */ private function aliasMigration(int $migrationsId, array $params) { /** @var ElasticsearchMigrationsAliasContract $repository */ @@ -248,6 +268,11 @@ private function aliasMigration(int $migrationsId, array $params) ); } + /** + * @param int $migrationsId + * @param array $params + * @throws \Throwable + */ private function deleteByQueryMigration(int $migrationsId, array $params) { /** @var ElasticsearchMigrationsDeleteByQueryContract $repository */ @@ -261,6 +286,11 @@ private function deleteByQueryMigration(int $migrationsId, array $params) ); } + /** + * @param int $migrationsId + * @param array $params + * @throws \Throwable + */ private function updateByQueryMigration(int $migrationsId, array $params) { /** @var ElasticsearchMigrationsUpdateByQueryContract $repository */ @@ -275,6 +305,11 @@ private function updateByQueryMigration(int $migrationsId, array $params) ); } + /** + * @param int $migrationsId + * @param array $params + * @throws \Throwable + */ private function reindexMigration(int $migrationsId, array $params) { /** @var ElasticsearchMigrationsReindexContract $repository */ diff --git a/src/Models/Entity/ElasticsearchMigration.php b/src/Models/Entity/ElasticsearchMigration.php index c3ede19..6d275c4 100644 --- a/src/Models/Entity/ElasticsearchMigration.php +++ b/src/Models/Entity/ElasticsearchMigration.php @@ -4,6 +4,10 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; +/** + * @property integer $id + * @property string $migration + */ class ElasticsearchMigration extends Model { /** @@ -13,15 +17,6 @@ class ElasticsearchMigration extends Model */ protected $table = 'triadev_elasticsearch_migration'; - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration' - ]; - /** * Get migrations * diff --git a/src/Models/Entity/ElasticsearchMigrationStatus.php b/src/Models/Entity/ElasticsearchMigrationStatus.php index 810af13..cb71ddf 100644 --- a/src/Models/Entity/ElasticsearchMigrationStatus.php +++ b/src/Models/Entity/ElasticsearchMigrationStatus.php @@ -3,6 +3,10 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property string $migrations_id + * @property string $status + */ class ElasticsearchMigrationStatus extends Model { /** @@ -11,14 +15,4 @@ class ElasticsearchMigrationStatus extends Model * @var string */ protected $table = 'triadev_elasticsearch_migration_status'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration', - 'status' - ]; } diff --git a/src/Models/Entity/ElasticsearchMigrations.php b/src/Models/Entity/ElasticsearchMigrations.php index af9bbee..d5bb0e8 100644 --- a/src/Models/Entity/ElasticsearchMigrations.php +++ b/src/Models/Entity/ElasticsearchMigrations.php @@ -3,6 +3,12 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $id + * @property integer $migration_id + * @property string $type + * @property string $index + */ class ElasticsearchMigrations extends Model { /** @@ -12,17 +18,6 @@ class ElasticsearchMigrations extends Model */ protected $table = 'triadev_elasticsearch_migrations'; - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'type', - 'index' - ]; - /** * Get migration by type * diff --git a/src/Models/Entity/ElasticsearchMigrationsAlias.php b/src/Models/Entity/ElasticsearchMigrationsAlias.php index c69d319..fb7247b 100644 --- a/src/Models/Entity/ElasticsearchMigrationsAlias.php +++ b/src/Models/Entity/ElasticsearchMigrationsAlias.php @@ -3,6 +3,12 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $migrations_id + * @property string $add + * @property string $remove + * @property string $remove_indices + */ class ElasticsearchMigrationsAlias extends Model { /** @@ -11,16 +17,4 @@ class ElasticsearchMigrationsAlias extends Model * @var string */ protected $table = 'triadev_elasticsearch_migrations_alias'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'add', - 'remove', - 'remove_indices' - ]; } diff --git a/src/Models/Entity/ElasticsearchMigrationsCreateIndex.php b/src/Models/Entity/ElasticsearchMigrationsCreateIndex.php index 61ee2e0..0829550 100644 --- a/src/Models/Entity/ElasticsearchMigrationsCreateIndex.php +++ b/src/Models/Entity/ElasticsearchMigrationsCreateIndex.php @@ -3,6 +3,11 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $migrations_id + * @property string $mappings + * @property string $settings + */ class ElasticsearchMigrationsCreateIndex extends Model { /** @@ -11,15 +16,4 @@ class ElasticsearchMigrationsCreateIndex extends Model * @var string */ protected $table = 'triadev_elasticsearch_migrations_create_index'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'mappings', - 'settings' - ]; } diff --git a/src/Models/Entity/ElasticsearchMigrationsDeleteByQuery.php b/src/Models/Entity/ElasticsearchMigrationsDeleteByQuery.php index fbcf890..e64a9ed 100644 --- a/src/Models/Entity/ElasticsearchMigrationsDeleteByQuery.php +++ b/src/Models/Entity/ElasticsearchMigrationsDeleteByQuery.php @@ -3,6 +3,12 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $migrations_id + * @property string $query + * @property string|null $type + * @property string $options + */ class ElasticsearchMigrationsDeleteByQuery extends Model { /** @@ -11,16 +17,4 @@ class ElasticsearchMigrationsDeleteByQuery extends Model * @var string */ protected $table = 'triadev_elasticsearch_migrations_delete_by_query'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'query', - 'type', - 'options' - ]; } diff --git a/src/Models/Entity/ElasticsearchMigrationsReindex.php b/src/Models/Entity/ElasticsearchMigrationsReindex.php index c27d7ed..ea39f98 100644 --- a/src/Models/Entity/ElasticsearchMigrationsReindex.php +++ b/src/Models/Entity/ElasticsearchMigrationsReindex.php @@ -3,6 +3,14 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $migrations_id + * @property string $dest_index + * @property bool $refresh_source_index + * @property string $global + * @property string $source + * @property string $dest + */ class ElasticsearchMigrationsReindex extends Model { /** @@ -11,18 +19,4 @@ class ElasticsearchMigrationsReindex extends Model * @var string */ protected $table = 'triadev_elasticsearch_migrations_reindex'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'dest_index', - 'refresh_source_index', - 'global', - 'source', - 'dest' - ]; } diff --git a/src/Models/Entity/ElasticsearchMigrationsUpdateByQuery.php b/src/Models/Entity/ElasticsearchMigrationsUpdateByQuery.php index f1ad14f..e9ce792 100644 --- a/src/Models/Entity/ElasticsearchMigrationsUpdateByQuery.php +++ b/src/Models/Entity/ElasticsearchMigrationsUpdateByQuery.php @@ -3,6 +3,13 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $migrations_id + * @property string $query + * @property string|null $type + * @property string|null $script + * @property string $options + */ class ElasticsearchMigrationsUpdateByQuery extends Model { /** @@ -11,17 +18,4 @@ class ElasticsearchMigrationsUpdateByQuery extends Model * @var string */ protected $table = 'triadev_elasticsearch_migrations_update_by_query'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'query', - 'type', - 'script', - 'options' - ]; } diff --git a/src/Models/Entity/ElasticsearchMigrationsUpdateIndex.php b/src/Models/Entity/ElasticsearchMigrationsUpdateIndex.php index 993bdcd..6b18311 100644 --- a/src/Models/Entity/ElasticsearchMigrationsUpdateIndex.php +++ b/src/Models/Entity/ElasticsearchMigrationsUpdateIndex.php @@ -3,6 +3,12 @@ use Illuminate\Database\Eloquent\Model; +/** + * @property integer $migrations_id + * @property string|null $mappings + * @property string|null $settings + * @property bool $close_index + */ class ElasticsearchMigrationsUpdateIndex extends Model { /** @@ -11,16 +17,4 @@ class ElasticsearchMigrationsUpdateIndex extends Model * @var string */ protected $table = 'triadev_elasticsearch_migrations_update_index'; - - /** - * The attributes that are mass assignable. - * - * @var array - */ - protected $fillable = [ - 'migration_id', - 'mappings', - 'settings', - 'close_index' - ]; } diff --git a/tests/TestCase.php b/tests/TestCase.php index 393d57b..0521cc3 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -47,7 +47,7 @@ protected function getEnvironmentSetUp($app) $app['config']->set('triadev-elasticsearch-migration', [ 'host' => 'localhost', - 'port' => 9200, + 'port' => env('ELASTICSEARCH_PORT', 9222), 'scheme' => 'http', 'user' => '', 'pass' => '',