feat: Added Extensionmigrations to laravel-settings config

This commit is contained in:
IceToast 2023-03-04 15:20:49 +01:00 committed by IceToast
parent 322bfed972
commit 3ea5b4e010
2 changed files with 29 additions and 3 deletions

View file

@ -2,6 +2,9 @@
namespace App\Helpers; namespace App\Helpers;
/**
* Summary of ExtensionHelper
*/
class ExtensionHelper class ExtensionHelper
{ {
/** /**
@ -60,7 +63,7 @@ class ExtensionHelper
/** /**
* Get all extensions * Get all extensions
* @return array * @return array of all extension paths look like: app/Extensions/ExtensionNamespace/ExtensionName
*/ */
public static function getAllExtensions() public static function getAllExtensions()
{ {
@ -79,4 +82,24 @@ class ExtensionHelper
return $extensions; return $extensions;
} }
/**
* Summary of getAllExtensionMigrations
* @return array of all migration paths look like: app/Extensions/ExtensionNamespace/ExtensionName/migrations/
*/
public static function getAllExtensionMigrations()
{
$extensions = ExtensionHelper::getAllExtensions();
// get all migration directories of the extensions and return them as array
$migrations = [];
foreach ($extensions as $extension) {
$migrationDir = $extension . '/migrations';
if (file_exists($migrationDir)) {
$migrations[] = $migrationDir;
}
}
return $migrations;
}
} }

View file

@ -1,5 +1,6 @@
<?php <?php
use App\Helpers\ExtensionHelper;
use App\Settings\GeneralSettings; use App\Settings\GeneralSettings;
use App\Settings\DiscordSettings; use App\Settings\DiscordSettings;
use App\Settings\InvoiceSettings; use App\Settings\InvoiceSettings;
@ -29,7 +30,7 @@ return [
ServerSettings::class, ServerSettings::class,
UserSettings::class, UserSettings::class,
WebsiteSettings::class, WebsiteSettings::class,
TicketSettings::class TicketSettings::class,
], ],
/* /*
@ -44,6 +45,8 @@ return [
*/ */
'migrations_paths' => [ 'migrations_paths' => [
database_path('settings'), database_path('settings'),
...ExtensionHelper::getAllExtensionMigrations()
], ],
/* /*
@ -88,7 +91,7 @@ return [
'global_casts' => [ 'global_casts' => [
DateTimeInterface::class => Spatie\LaravelSettings\SettingsCasts\DateTimeInterfaceCast::class, DateTimeInterface::class => Spatie\LaravelSettings\SettingsCasts\DateTimeInterfaceCast::class,
DateTimeZone::class => Spatie\LaravelSettings\SettingsCasts\DateTimeZoneCast::class, DateTimeZone::class => Spatie\LaravelSettings\SettingsCasts\DateTimeZoneCast::class,
// Spatie\DataTransferObject\DataTransferObject::class => Spatie\LaravelSettings\SettingsCasts\DtoCast::class, // Spatie\DataTransferObject\DataTransferObject::class => Spatie\LaravelSettings\SettingsCasts\DtoCast::class,
Spatie\LaravelData\Data::class => Spatie\LaravelSettings\SettingsCasts\DataCast::class, Spatie\LaravelData\Data::class => Spatie\LaravelSettings\SettingsCasts\DataCast::class,
], ],