From d261d76c9881a108a435d485e9bb2b524d4b5ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enes=20Sacid=20B=C3=BCker?= <73346401+EnesSacid-Buker@users.noreply.github.com> Date: Fri, 10 Mar 2023 10:38:34 +0300 Subject: [PATCH] Updates trait, migration option added --- app/Traits/Updates.php | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/app/Traits/Updates.php b/app/Traits/Updates.php index 31fcd773e..ae5fabf11 100644 --- a/app/Traits/Updates.php +++ b/app/Traits/Updates.php @@ -2,20 +2,27 @@ namespace App\Traits; +use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\File; trait Updates { + /** + * get the alias. + */ + public function getAlias(): string + { + $const = static::class . '::ALIAS'; + + return defined($const) ? constant($const) : 'core'; + } + /** * get the path by alias. */ public function getPathByAlias(string $alias = ''): string { - if (empty($alias)) { - $const = static::class . '::ALIAS'; - - $alias = defined($const) ? constant($const) : 'core'; - } + $alias = empty($alias) ? $this->getAlias() : $alias; return $alias === 'core' ? base_path() : module_path($alias); } @@ -43,4 +50,28 @@ trait Updates File::deleteDirectory($path . '/' . $folder); } } + + public function runMigration(string $file_name, $alias = ''): void + { + $path = $this->getPathByAlias($alias); + + $semi_path = str($path)->contains('modules') ? '/Database/Migrations/' : '/database/migrations/'; + + $migration_file = $path . $semi_path . $file_name . '.php'; + + if (File::missing($migration_file)) { + return; + } + + $migration_file = str($migration_file)->replace(base_path(), ''); + + Artisan::call('migrate', ['--force' => true, '--path' => $migration_file]); + } + + public function runMigrations(array $file_names, $alias = ''): void + { + foreach ($file_names as $file_name) { + $this->runMigration($file_name, $alias); + } + } }