Skip to content

Commit

Permalink
Migrations from database.
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher Lorke committed Sep 23, 2018
1 parent 2b0b1f8 commit 8af062c
Show file tree
Hide file tree
Showing 54 changed files with 2,562 additions and 71 deletions.
13 changes: 1 addition & 12 deletions src/Business/Repository/ElasticsearchMigration.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Illuminate\Database\Eloquent\Collection;
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationContract;

class ElasticsearchMigration implements ElasticsearchMigrationContract
Expand All @@ -10,8 +9,7 @@ class ElasticsearchMigration implements ElasticsearchMigrationContract
* @inheritdoc
*/
public function createOrUpdate(
string $migration,
string $status
string $migration
): \Triadev\EsMigration\Models\Entity\ElasticsearchMigration {
$dbMigration = $this->find($migration);

Expand All @@ -20,7 +18,6 @@ public function createOrUpdate(
$dbMigration->migration = $migration;
}

$dbMigration->status = $status;
$dbMigration->saveOrFail();

return $dbMigration;
Expand All @@ -36,14 +33,6 @@ public function find(string $migration): ?\Triadev\EsMigration\Models\Entity\Ela
->first();
}

/**
* @inheritdoc
*/
public function all(array $fields = ['*']) : Collection
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigration::all($fields);
}

/**
* @inheritdoc
*/
Expand Down
56 changes: 56 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationStatus.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Illuminate\Database\Eloquent\Collection;
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationStatusContract;

class ElasticsearchMigrationStatus implements ElasticsearchMigrationStatusContract
{
/**
* @inheritdoc
*/
public function createOrUpdate(
string $migration,
string $status
): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStatus {
$dbMigration = $this->find($migration);

if (!$dbMigration) {
$dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStatus();
$dbMigration->migration = $migration;
}

$dbMigration->status = $status;
$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(string $migration): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStatus
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStatus::where('migration', $migration)
->orderBy('created_at', 'desc')
->first();
}

/**
* @inheritdoc
*/
public function all(array $fields = ['*']) : Collection
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStatus::all($fields);
}

/**
* @inheritdoc
*/
public function delete(string $migration)
{
if ($migration = $this->find($migration)) {
$migration->delete();
}
}
}
34 changes: 34 additions & 0 deletions src/Business/Repository/ElasticsearchMigrations.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsContract;

class ElasticsearchMigrations implements ElasticsearchMigrationsContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationId,
string $type,
string $index
): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrations {
$dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrations();
$dbMigration->migration_id = $migrationId;
$dbMigration->type = $type;
$dbMigration->index = $index;

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrations
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrations::where('id', $migrationsId)
->first();
}
}
37 changes: 37 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationsAlias.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsAliasContract;

class ElasticsearchMigrationsAlias implements ElasticsearchMigrationsAliasContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationsId,
array $add = [],
array $remove = [],
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);
$dbMigration->remove_indices = json_encode($removeIndices);

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsAlias
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsAlias::where('migrations_id',
$migrationsId)
->first();
}
}
38 changes: 38 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationsCreateIndex.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsCreateIndexContract;

class ElasticsearchMigrationsCreateIndex implements ElasticsearchMigrationsCreateIndexContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationsId,
array $mappings,
?array $settings = null
): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsCreateIndex {
$dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsCreateIndex();
$dbMigration->migrations_id = $migrationsId;
$dbMigration->mappings = json_encode($mappings);

if (is_array($settings)) {
$dbMigration->settings = json_encode($settings);
}

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsCreateIndex
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsCreateIndex::where('migrations_id',
$migrationsId)
->first();
}
}
37 changes: 37 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationsDeleteByQuery.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsDeleteByQueryContract;

class ElasticsearchMigrationsDeleteByQuery implements ElasticsearchMigrationsDeleteByQueryContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationsId,
array $query,
?string $type = null,
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;
$dbMigration->options = json_encode($options);

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsDeleteByQuery
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsDeleteByQuery::where('migrations_id',
$migrationsId)
->first();
}
}
41 changes: 41 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationsReindex.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsReindexContract;

class ElasticsearchMigrationsReindex implements ElasticsearchMigrationsReindexContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationsId,
string $destIndex,
bool $refreshSourceIndex = false,
array $global = [],
array $source = [],
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;
$dbMigration->global = json_encode($global);
$dbMigration->source = json_encode($source);
$dbMigration->dest = json_encode($dest);

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsReindex
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsReindex::where('migrations_id',
$migrationsId)
->first();
}
}
39 changes: 39 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationsUpdateByQuery.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsUpdateByQueryContract;

class ElasticsearchMigrationsUpdateByQuery implements ElasticsearchMigrationsUpdateByQueryContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationsId,
array $query,
?string $type = null,
?array $script = null,
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 = json_encode($type);
$dbMigration->script = is_array($script) ? json_encode($script): null;
$dbMigration->options = json_encode($options);

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* F@inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateByQuery
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateByQuery::where('migrations_id',
$migrationsId)
->first();
}
}
43 changes: 43 additions & 0 deletions src/Business/Repository/ElasticsearchMigrationsUpdateIndex.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
namespace Triadev\EsMigration\Business\Repository;

use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationsUpdateIndexContract;

class ElasticsearchMigrationsUpdateIndex implements ElasticsearchMigrationsUpdateIndexContract
{
/**
* @inheritdoc
*/
public function create(
int $migrationsId,
?array $mappings = null,
?array $settings = null,
bool $closeIndex = false
): \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateIndex {
$dbMigration = new \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateIndex();
$dbMigration->migrations_id = $migrationsId;
$dbMigration->close_index = $closeIndex;

if (is_array($mappings)) {
$dbMigration->mappings = json_encode($mappings);
}

if (is_array($settings)) {
$dbMigration->settings = json_encode($settings);
}

$dbMigration->saveOrFail();

return $dbMigration;
}

/**
* @inheritdoc
*/
public function find(int $migrationsId): ?\Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateIndex
{
return \Triadev\EsMigration\Models\Entity\ElasticsearchMigrationsUpdateIndex::where('migrations_id',
$migrationsId)
->first();
}
}
8 changes: 4 additions & 4 deletions src/Console/Commands/ShowMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
namespace Triadev\EsMigration\Console\Commands;

use Illuminate\Console\Command;
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationContract;
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationStatusContract;

class ShowMigration extends Command
{
Expand All @@ -25,13 +25,13 @@ class ShowMigration extends Command
/**
* Execute the console command.
*
* @param ElasticsearchMigrationContract $elasticsearchMigrationRepository
* @param ElasticsearchMigrationStatusContract $elasticsearchMigrationStatusRepository
*/
public function handle(ElasticsearchMigrationContract $elasticsearchMigrationRepository)
public function handle(ElasticsearchMigrationStatusContract $elasticsearchMigrationStatusRepository)
{
$sortField = $this->argument('sortField');

$migrations = $elasticsearchMigrationRepository->all(['migration', 'status', 'created_at', 'updated_at']);
$migrations = $elasticsearchMigrationStatusRepository->all(['migration', 'status', 'created_at', 'updated_at']);

switch ($this->argument('sortOrder')) {
case 'asc':
Expand Down
Loading

0 comments on commit 8af062c

Please sign in to comment.