123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- <?php
-
- namespace Illuminate\Database\Migrations;
-
- use Illuminate\Database\ConnectionResolverInterface as Resolver;
-
- class DatabaseMigrationRepository implements MigrationRepositoryInterface
- {
- /**
- * The database connection resolver instance.
- *
- * @var \Illuminate\Database\ConnectionResolverInterface
- */
- protected $resolver;
-
- /**
- * The name of the migration table.
- *
- * @var string
- */
- protected $table;
-
- /**
- * The name of the database connection to use.
- *
- * @var string
- */
- protected $connection;
-
- /**
- * Create a new database migration repository instance.
- *
- * @param \Illuminate\Database\ConnectionResolverInterface $resolver
- * @param string $table
- * @return void
- */
- public function __construct(Resolver $resolver, $table)
- {
- $this->table = $table;
- $this->resolver = $resolver;
- }
-
- /**
- * Get the completed migrations.
- *
- * @return array
- */
- public function getRan()
- {
- return $this->table()
- ->orderBy('batch', 'asc')
- ->orderBy('migration', 'asc')
- ->pluck('migration')->all();
- }
-
- /**
- * Get list of migrations.
- *
- * @param int $steps
- * @return array
- */
- public function getMigrations($steps)
- {
- $query = $this->table()->where('batch', '>=', '1');
-
- return $query->orderBy('batch', 'desc')
- ->orderBy('migration', 'desc')
- ->take($steps)->get()->all();
- }
-
- /**
- * Get the last migration batch.
- *
- * @return array
- */
- public function getLast()
- {
- $query = $this->table()->where('batch', $this->getLastBatchNumber());
-
- return $query->orderBy('migration', 'desc')->get()->all();
- }
-
- /**
- * Get the completed migrations with their batch numbers.
- *
- * @return array
- */
- public function getMigrationBatches()
- {
- return $this->table()
- ->orderBy('batch', 'asc')
- ->orderBy('migration', 'asc')
- ->pluck('batch', 'migration')->all();
- }
-
- /**
- * Log that a migration was run.
- *
- * @param string $file
- * @param int $batch
- * @return void
- */
- public function log($file, $batch)
- {
- $record = ['migration' => $file, 'batch' => $batch];
-
- $this->table()->insert($record);
- }
-
- /**
- * Remove a migration from the log.
- *
- * @param object $migration
- * @return void
- */
- public function delete($migration)
- {
- $this->table()->where('migration', $migration->migration)->delete();
- }
-
- /**
- * Get the next migration batch number.
- *
- * @return int
- */
- public function getNextBatchNumber()
- {
- return $this->getLastBatchNumber() + 1;
- }
-
- /**
- * Get the last migration batch number.
- *
- * @return int
- */
- public function getLastBatchNumber()
- {
- return $this->table()->max('batch');
- }
-
- /**
- * Create the migration repository data store.
- *
- * @return void
- */
- public function createRepository()
- {
- $schema = $this->getConnection()->getSchemaBuilder();
-
- $schema->create($this->table, function ($table) {
- // The migrations table is responsible for keeping track of which of the
- // migrations have actually run for the application. We'll create the
- // table to hold the migration file's path as well as the batch ID.
- $table->increments('id');
- $table->string('migration');
- $table->integer('batch');
- });
- }
-
- /**
- * Determine if the migration repository exists.
- *
- * @return bool
- */
- public function repositoryExists()
- {
- $schema = $this->getConnection()->getSchemaBuilder();
-
- return $schema->hasTable($this->table);
- }
-
- /**
- * Get a query builder for the migration table.
- *
- * @return \Illuminate\Database\Query\Builder
- */
- protected function table()
- {
- return $this->getConnection()->table($this->table)->useWritePdo();
- }
-
- /**
- * Get the connection resolver instance.
- *
- * @return \Illuminate\Database\ConnectionResolverInterface
- */
- public function getConnectionResolver()
- {
- return $this->resolver;
- }
-
- /**
- * Resolve the database connection instance.
- *
- * @return \Illuminate\Database\Connection
- */
- public function getConnection()
- {
- return $this->resolver->connection($this->connection);
- }
-
- /**
- * Set the information source to gather data.
- *
- * @param string $name
- * @return void
- */
- public function setSource($name)
- {
- $this->connection = $name;
- }
- }
|