![]() Server : Apache/2.4.62 (Unix) OpenSSL/1.0.2k-fips System : Linux server1.richineiserver.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : fdshops ( 1003) PHP Version : 8.2.21 Disable Function : NONE Directory : /home/fdshops/public_html/vendor/arcanedev/support/src/Database/ |
<?php declare(strict_types=1); namespace Arcanedev\Support\Database; use Closure; use Illuminate\Database\Migrations\Migration as IlluminateMigration; use Illuminate\Database\Schema\Builder; /** * Class Migration * * @author ARCANEDEV <arcanedev.maroc@gmail.com> */ abstract class Migration extends IlluminateMigration { /* ----------------------------------------------------------------- | Properties | ----------------------------------------------------------------- */ /** * The table name. * * @var string|null */ protected $table; /** * The table prefix. * * @var string|null */ protected $prefix; /* ----------------------------------------------------------------- | Getters & Setters | ----------------------------------------------------------------- */ /** * Get a schema builder instance for the connection. * * @return \Illuminate\Database\Schema\Builder */ protected function getSchemaBuilder(): Builder { /** @var \Illuminate\Database\DatabaseManager $db */ $db = app()->make('db'); return $db->connection($this->hasConnection() ? $this->getConnection() : null) ->getSchemaBuilder(); } /** * Set the migration connection name. * * @param string $connection * * @return $this */ public function setConnection($connection) { $this->connection = $connection; return $this; } /** * Get the prefixed table name. * * @return string */ public function getTableName() { return $this->hasPrefix() ? $this->prefix.$this->table : $this->table; } /** * Set the table name. * * @param string $table * * @return $this */ public function setTable($table) { $this->table = $table; return $this; } /** * Set the prefix name. * * @param string $prefix * * @return $this */ public function setPrefix($prefix) { $this->prefix = $prefix; return $this; } /* ----------------------------------------------------------------- | Main Methods | ----------------------------------------------------------------- */ /** * Migrate to database. */ abstract public function up(): void; /** * Rollback the migration. */ public function down(): void { $this->getSchemaBuilder()->dropIfExists($this->getTableName()); } /** * Create Table Schema. * * @param \Closure $blueprint */ protected function createSchema(Closure $blueprint): void { $this->getSchemaBuilder()->create($this->getTableName(), $blueprint); } /** * Modify a table on the schema. * * @param \Closure $callback */ protected function table(Closure $callback): void { $this->getSchemaBuilder()->table($this->getTableName(), $callback); } /* ----------------------------------------------------------------- | Check Methods | ----------------------------------------------------------------- */ /** * Check if connection exists. * * @return bool */ protected function hasConnection(): bool { return $this->isNotEmpty($this->getConnection()); } /** * Check if table has prefix. * * @return bool */ protected function hasPrefix(): bool { return $this->isNotEmpty($this->prefix); } /** * Check if the value is not empty. * * @param string|null $value * * @return bool */ private function isNotEmpty($value): bool { return ! (is_null($value) || empty($value)); } }