Skip to content

Commit

Permalink
Merge pull request #20 from triadev/get_all_migrations
Browse files Browse the repository at this point in the history
Added public method: getAllMigrations()
  • Loading branch information
triadev committed Oct 28, 2018
2 parents 4ac2167 + 042a8b6 commit 0744db2
Show file tree
Hide file tree
Showing 6 changed files with 168 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
[![Travis][ico-travis]][link-travis]
[![Coveralls](https://coveralls.io/repos/github/triadev/LaravelElasticsearchMigration/badge.svg?branch=master)](https://coveralls.io/github/triadev/LaravelElasticsearchMigration?branch=master)
[![CodeCov](https://codecov.io/gh/triadev/LaravelElasticsearchMigration/branch/master/graph/badge.svg)](https://codecov.io/gh/triadev/LaravelElasticsearchMigration)

[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/triadev/LaravelElasticsearchMigration/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/triadev/LaravelElasticsearchMigration/?branch=master)
[![Code Coverage](https://scrutinizer-ci.com/g/triadev/LaravelElasticsearchMigration/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/triadev/LaravelElasticsearchMigration/?branch=master)
[![Build Status](https://scrutinizer-ci.com/g/triadev/LaravelElasticsearchMigration/badges/build.png?b=master)](https://scrutinizer-ci.com/g/triadev/LaravelElasticsearchMigration/build-status/master)
Expand Down
9 changes: 9 additions & 0 deletions src/Contract/ElasticsearchMigrationContract.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
use Triadev\EsMigration\Business\Repository\ElasticsearchClients;
use Triadev\EsMigration\Exception\MigrationAlreadyDone;
use Triadev\EsMigration\Exception\MigrationStepNotFound;
use Triadev\EsMigration\Models\Migration;

interface ElasticsearchMigrationContract
{
Expand Down Expand Up @@ -104,4 +105,12 @@ public function startMigration(string $migration, ElasticsearchClients $elastics
* @throws \Throwable
*/
public function restartMigration(string $migration, ElasticsearchClients $elasticsearchClients);

/**
* Get all migrations
*
* @param array|null $onlyWithStatus
* @return Migration[]
*/
public function getAllMigrations(?array $onlyWithStatus = null) : array;
}
28 changes: 28 additions & 0 deletions src/ElasticsearchMigration.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php
namespace Triadev\EsMigration;

use Illuminate\Support\Carbon;
use Triadev\EsMigration\Business\Repository\ElasticsearchClients;
use Triadev\EsMigration\Business\Service\MigrationSteps;
use Triadev\EsMigration\Contract\ElasticsearchMigrationContract;
Expand All @@ -13,6 +14,7 @@
use Triadev\EsMigration\Models\Entity\ElasticsearchMigrationStep;
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationContract as EsMigrationRepositoryInterface;
use Triadev\EsMigration\Contract\Repository\ElasticsearchMigrationStepContract as EsMigrationStepRepositoryInterface;
use Triadev\EsMigration\Models\Migration;
use Triadev\EsMigration\Models\MigrationStep;

class ElasticsearchMigration implements ElasticsearchMigrationContract
Expand Down Expand Up @@ -270,4 +272,30 @@ private function startMigrationStep(
}
}
}

/**
* @inheritdoc
*/
public function getAllMigrations(?array $onlyWithStatus = null): array
{
$migrations = [];

$this->migrationRepository->all()->each(function ($migrationEntity) use (&$migrations, $onlyWithStatus) {
/** @var \Triadev\EsMigration\Models\Entity\ElasticsearchMigration $migrationEntity */
if (is_array($onlyWithStatus) && !in_array($migrationEntity->status, $onlyWithStatus)) {
return;
}

$migrations[] = new Migration(
$migrationEntity->id,
$migrationEntity->migration,
$migrationEntity->status,
$migrationEntity->error,
Carbon::parse($migrationEntity->created_at),
Carbon::parse($migrationEntity->updated_at)
);
});

return $migrations;
}
}
2 changes: 2 additions & 0 deletions src/Models/Entity/ElasticsearchMigration.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
* @property string $migration
* @property string $status
* @property string|null $error
* @property string $created_at
* @property string $updated_at
*/
class ElasticsearchMigration extends Model
{
Expand Down
96 changes: 96 additions & 0 deletions src/Models/Migration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<?php
namespace Triadev\EsMigration\Models;

class Migration
{
/** @var int */
private $id;

/** @var string */
private $migration;

/** @var int */
private $status;

/** @var string|null */
private $error;

/** @var \DateTime */
private $createdAt;

/** @var \DateTime */
private $updatedAt;

/**
* Migration constructor.
* @param int $id
* @param string $migration
* @param int $status
* @param null|string $error
* @param \DateTime $createdAt
* @param \DateTime $updatedAt
*/
public function __construct(
int $id,
string $migration,
int $status,
?string $error,
\DateTime $createdAt,
\DateTime $updatedAt
) {
$this->id = $id;
$this->migration = $migration;
$this->status = $status;
$this->error = $error;
$this->createdAt = $createdAt;
$this->updatedAt = $updatedAt;
}

/**
* @return int
*/
public function getId(): int
{
return $this->id;
}

/**
* @return string
*/
public function getMigration(): string
{
return $this->migration;
}

/**
* @return int
*/
public function getStatus(): int
{
return $this->status;
}

/**
* @return null|string
*/
public function getError(): ?string
{
return $this->error;
}

/**
* @return \DateTime
*/
public function getCreatedAt(): \DateTime
{
return $this->createdAt;
}

/**
* @return \DateTime
*/
public function getUpdatedAt(): \DateTime
{
return $this->updatedAt;
}
}
32 changes: 32 additions & 0 deletions tests/integration/ElasticsearchMigrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,38 @@ public function it_creates_a_migration()
);
}

/**
* @test
*/
public function it_gets_all_migrations()
{
$this->assertTrue(
$this->migrationService->createMigration(
'phpunit1'
)
);

$this->assertTrue(
$this->migrationService->createMigration(
'phpunit2'
)
);

// Without status constraint
$migrations = $this->migrationService->getAllMigrations();
$this->assertEquals('phpunit1', $migrations[0]->getMigration());
$this->assertEquals('phpunit2', $migrations[1]->getMigration());

// Only status: wait
$migrations = $this->migrationService->getAllMigrations([MigrationStatus::MIGRATION_STATUS_WAIT]);
$this->assertEquals('phpunit1', $migrations[0]->getMigration());
$this->assertEquals('phpunit2', $migrations[1]->getMigration());

// Only status: done
$migrations = $this->migrationService->getAllMigrations([MigrationStatus::MIGRATION_STATUS_DONE]);
$this->assertEmpty($migrations);
}

/**
* @test
*/
Expand Down

0 comments on commit 0744db2

Please sign in to comment.