From 85b671919b9f4472ece7c72c7c38f3158b9af478 Mon Sep 17 00:00:00 2001 From: yamaha252 Date: Fri, 28 Jul 2023 22:46:36 +0500 Subject: [PATCH 1/4] uuid models support --- ...29_update_activity_log_subject_id_type.php | 52 +++++++++++++++++++ .../Admin/AppSettingsController.php | 4 +- .../Controllers/Admin/GroupController.php | 4 +- .../Controllers/Admin/ModuleController.php | 26 +++++----- src/Http/Controllers/Admin/RoleController.php | 4 +- src/Http/Controllers/Admin/UserController.php | 4 +- src/Repositories/ModuleRepository.php | 2 +- 7 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 migrations/default/2023_07_28_114329_update_activity_log_subject_id_type.php diff --git a/migrations/default/2023_07_28_114329_update_activity_log_subject_id_type.php b/migrations/default/2023_07_28_114329_update_activity_log_subject_id_type.php new file mode 100644 index 000000000..361268306 --- /dev/null +++ b/migrations/default/2023_07_28_114329_update_activity_log_subject_id_type.php @@ -0,0 +1,52 @@ +hasTable($tableName)) { + $connection->table( + $tableName, + function (Blueprint $table) use ($connection, $tableName) { + if ($connection->hasColumn($tableName, 'subject_id')) { + $table->string('subject_id', 36)->change(); + } + } + ); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $connection = Schema::connection(config('activitylog.database_connection')); + $tableName = config('activitylog.table_name'); + + if ($connection->hasTable($tableName)) { + $connection->table( + $tableName, + function (Blueprint $table) use ($connection, $tableName) { + if ($connection->hasColumn($tableName, 'subject_id')) { + $table->bigInteger('subject_id')->change(); + } + } + ); + } + } +}; diff --git a/src/Http/Controllers/Admin/AppSettingsController.php b/src/Http/Controllers/Admin/AppSettingsController.php index 084f0cdc9..6e4689331 100644 --- a/src/Http/Controllers/Admin/AppSettingsController.php +++ b/src/Http/Controllers/Admin/AppSettingsController.php @@ -33,7 +33,7 @@ protected function setUpController(): void } } - public function update(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { $model = AppSetting::findOrFail($id); @@ -107,7 +107,7 @@ protected function getRepositoryClass($model): string return AppSettingsRepository::class; } - protected function form(?int $id, ?TwillModelContract $item = null): array + protected function form(int|string|null $id, ?TwillModelContract $item = null): array { $base = parent::form($id, $item); diff --git a/src/Http/Controllers/Admin/GroupController.php b/src/Http/Controllers/Admin/GroupController.php index 5451cd1b9..f9ecdd0b9 100644 --- a/src/Http/Controllers/Admin/GroupController.php +++ b/src/Http/Controllers/Admin/GroupController.php @@ -93,14 +93,14 @@ protected function getBrowserItems($scopes = []) })->values(); } - public function edit(int|TwillModelContract $id): mixed + public function edit(int|string|TwillModelContract $id): mixed { $this->authorizableOptions['edit'] = 'edit-group'; return parent::edit($id); } - public function update(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { $this->authorizableOptions['edit'] = 'edit-group'; diff --git a/src/Http/Controllers/Admin/ModuleController.php b/src/Http/Controllers/Admin/ModuleController.php index b6051a2ea..fdd1c5e87 100644 --- a/src/Http/Controllers/Admin/ModuleController.php +++ b/src/Http/Controllers/Admin/ModuleController.php @@ -1092,7 +1092,7 @@ public function store($parentModuleId = null) /** * @param Request $request - * @param int|$id + * @param int|string $id * @param int|null $submoduleId * @return \Illuminate\Http\RedirectResponse */ @@ -1111,14 +1111,14 @@ public function show($id, $submoduleId = null) * id: int * } */ - private function itemAndIdFromRequest(TwillModelContract|int $id): array + private function itemAndIdFromRequest(TwillModelContract|int|string $id): array { if ($id instanceof TwillModelContract) { $item = $id; $id = $item->id; } else { $parameter = Str::singular(Str::afterLast($this->moduleName, '.')); - $id = (int) $this->request->route()->parameter($parameter, $id); + $id = $this->request->route()->parameter($parameter, $id); $item = $this->repository->getById($id, $this->formWith, $this->formWithCount); } @@ -1128,7 +1128,7 @@ private function itemAndIdFromRequest(TwillModelContract|int $id): array ]; } - public function edit(TwillModelContract|int $id): mixed + public function edit(TwillModelContract|int|string $id): mixed { [$item, $id] = $this->itemAndIdFromRequest($id); @@ -1205,7 +1205,7 @@ public function create(int $parentModuleId = null): JsonResponse|RedirectRespons ); } - public function update(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { [$item, $id] = $this->itemAndIdFromRequest($id); @@ -1295,7 +1295,7 @@ protected function performUpdate($item): void } } - public function preview(int $id): IlluminateView + public function preview(int|string $id): IlluminateView { if ($this->request->has('revisionId')) { $item = $this->repository->previewForRevision($id, $this->request->get('revisionId')); @@ -1323,7 +1323,7 @@ public function preview(int $id): IlluminateView } /** - * @param int $id + * @param int|string $id * @return \Illuminate\View\View */ public function restoreRevision($id) @@ -1371,7 +1371,7 @@ public function publish(): JsonResponse { try { $data = $this->validate($this->request, [ - 'id' => 'integer|required', + 'id' => 'required', 'active' => 'bool|required', ]); @@ -1435,7 +1435,7 @@ public function bulkPublish(): JsonResponse ); } - public function duplicate(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function duplicate(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { [$item, $id] = $this->itemAndIdFromRequest($id); @@ -1475,7 +1475,7 @@ public function duplicate(int|TwillModelContract $id, ?int $submoduleId = null): ); } - public function destroy(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function destroy(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { [$item, $id] = $this->itemAndIdFromRequest($id); @@ -2188,7 +2188,7 @@ protected function orderScope(): array return $orders + $defaultOrders; } - protected function form(?int $id, ?TwillModelContract $item = null): array + protected function form(int|string|null $id, ?TwillModelContract $item = null): array { if (! $item && $id) { $item = $this->repository->getById($id, $this->formWith, $this->formWithCount); @@ -2258,7 +2258,7 @@ protected function form(?int $id, ?TwillModelContract $item = null): array return $form; } - protected function modalFormData(int|TwillModelContract $modelOrId): array + protected function modalFormData(int|string|TwillModelContract $modelOrId): array { if ($modelOrId instanceof TwillModelContract) { $item = $modelOrId; @@ -2568,7 +2568,7 @@ protected function getBackLinkSessionKey() } /** - * @param int $id + * @param int|string $id * @param array $params * @return \Illuminate\Http\RedirectResponse */ diff --git a/src/Http/Controllers/Admin/RoleController.php b/src/Http/Controllers/Admin/RoleController.php index d1f218bbb..70d0f125b 100644 --- a/src/Http/Controllers/Admin/RoleController.php +++ b/src/Http/Controllers/Admin/RoleController.php @@ -96,14 +96,14 @@ public function index(?int $parentModuleId = null): mixed return parent::index($parentModuleId); } - public function edit(int|TwillModelContract $id): mixed + public function edit(int|string|TwillModelContract $id): mixed { $this->authorizableOptions['edit'] = 'edit-role'; return parent::edit($id); } - public function update(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { $this->authorizableOptions['edit'] = 'edit-role'; diff --git a/src/Http/Controllers/Admin/UserController.php b/src/Http/Controllers/Admin/UserController.php index ccea6ab93..fb8cc58ec 100755 --- a/src/Http/Controllers/Admin/UserController.php +++ b/src/Http/Controllers/Admin/UserController.php @@ -289,14 +289,14 @@ protected function indexItemData($item) return ['edit' => $canEdit ? $this->getModuleRoute($item->id, 'edit') : null]; } - public function edit(int|TwillModelContract $id): mixed + public function edit(int|string|TwillModelContract $id): mixed { $this->authorizableOptions['edit'] = 'edit-user'; return parent::edit($id); } - public function update(int|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse { $this->authorizableOptions['edit'] = 'edit-user'; diff --git a/src/Repositories/ModuleRepository.php b/src/Repositories/ModuleRepository.php index 47e56466a..1c2fa2b23 100644 --- a/src/Repositories/ModuleRepository.php +++ b/src/Repositories/ModuleRepository.php @@ -117,7 +117,7 @@ public function getCountByStatusSlug(string $slug, array $scope = []): int /** * @throws \Illuminate\Database\Eloquent\ModelNotFoundException */ - public function getById(int $id, array $with = [], array $withCount = []): TwillModelContract + public function getById(int|string $id, array $with = [], array $withCount = []): TwillModelContract { return once(function () use ($id, $with, $withCount) { return $this->model->with($with)->withCount($withCount)->findOrFail($id); From 36517b3f632302eea4a2f3bc0451758e78e97cc7 Mon Sep 17 00:00:00 2001 From: yamaha252 Date: Mon, 31 Jul 2023 16:36:08 +0500 Subject: [PATCH 2/4] uuid models support for nesting modules --- .../Controllers/Admin/AppSettingsController.php | 2 +- .../Controllers/Admin/FileLibraryController.php | 4 ++-- src/Http/Controllers/Admin/GroupController.php | 2 +- .../Controllers/Admin/MediaLibraryController.php | 4 ++-- src/Http/Controllers/Admin/ModuleController.php | 16 ++++++++-------- src/Http/Controllers/Admin/RoleController.php | 4 ++-- .../Admin/SingletonModuleController.php | 2 +- src/Http/Controllers/Admin/UserController.php | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Http/Controllers/Admin/AppSettingsController.php b/src/Http/Controllers/Admin/AppSettingsController.php index 6e4689331..18d104063 100644 --- a/src/Http/Controllers/Admin/AppSettingsController.php +++ b/src/Http/Controllers/Admin/AppSettingsController.php @@ -33,7 +33,7 @@ protected function setUpController(): void } } - public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { $model = AppSetting::findOrFail($id); diff --git a/src/Http/Controllers/Admin/FileLibraryController.php b/src/Http/Controllers/Admin/FileLibraryController.php index e04eeb40e..a315a00fb 100644 --- a/src/Http/Controllers/Admin/FileLibraryController.php +++ b/src/Http/Controllers/Admin/FileLibraryController.php @@ -106,7 +106,7 @@ public function filters(): TableFilters ]); } - public function index(?int $parentModuleId = null): mixed + public function index(int|string|null $parentModuleId = null): mixed { if ($this->request->has('except')) { $prependScope['exceptIds'] = $this->request->get('except'); @@ -172,7 +172,7 @@ protected function getRequestFilters(): array } /** - * @param int|null $parentModuleId + * @param int|string|null $parentModuleId * @return JsonResponse * @throws BindingResolutionException */ diff --git a/src/Http/Controllers/Admin/GroupController.php b/src/Http/Controllers/Admin/GroupController.php index f9ecdd0b9..503225500 100644 --- a/src/Http/Controllers/Admin/GroupController.php +++ b/src/Http/Controllers/Admin/GroupController.php @@ -100,7 +100,7 @@ public function edit(int|string|TwillModelContract $id): mixed return parent::edit($id); } - public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { $this->authorizableOptions['edit'] = 'edit-group'; diff --git a/src/Http/Controllers/Admin/MediaLibraryController.php b/src/Http/Controllers/Admin/MediaLibraryController.php index 84c1ae2e2..e0bc6933a 100644 --- a/src/Http/Controllers/Admin/MediaLibraryController.php +++ b/src/Http/Controllers/Admin/MediaLibraryController.php @@ -106,7 +106,7 @@ public function filters(): TableFilters ]); } - public function index(?int $parentModuleId = null): array + public function index(int|string|null $parentModuleId = null): array { if ($this->request->has('except')) { $prependScope['exceptIds'] = $this->request->get('except'); @@ -150,7 +150,7 @@ protected function getRequestFilters(): array } /** - * @param int|null $parentModuleId + * @param int|string|null $parentModuleId * @return */ public function store($parentModuleId = null) diff --git a/src/Http/Controllers/Admin/ModuleController.php b/src/Http/Controllers/Admin/ModuleController.php index fdd1c5e87..43851c804 100644 --- a/src/Http/Controllers/Admin/ModuleController.php +++ b/src/Http/Controllers/Admin/ModuleController.php @@ -259,7 +259,7 @@ abstract class ModuleController extends Controller protected $submodule = false; /** - * @var int|null + * @var int|string|null */ protected $submoduleParentId = null; @@ -970,7 +970,7 @@ protected function getParentModuleIdFromRequest(Request $request) /** * @return IlluminateView|JsonResponse */ - public function index(?int $parentModuleId = null): mixed + public function index(int|string|null $parentModuleId = null): mixed { $this->authorizeOption('list', $this->moduleName); @@ -1032,7 +1032,7 @@ public function browser(): JsonResponse } /** - * @param int|null $parentModuleId + * @param int|string|null $parentModuleId * @return \Illuminate\Http\JsonResponse */ public function store($parentModuleId = null) @@ -1093,7 +1093,7 @@ public function store($parentModuleId = null) /** * @param Request $request * @param int|string $id - * @param int|null $submoduleId + * @param int|string|null $submoduleId * @return \Illuminate\Http\RedirectResponse */ public function show($id, $submoduleId = null) @@ -1169,7 +1169,7 @@ public function edit(TwillModelContract|int|string $id): mixed ); } - public function create(int $parentModuleId = null): JsonResponse|RedirectResponse|IlluminateView + public function create(int|string $parentModuleId = null): JsonResponse|RedirectResponse|IlluminateView { if (! $this->getIndexOption('skipCreateModal')) { return Redirect::to( @@ -1205,7 +1205,7 @@ public function create(int $parentModuleId = null): JsonResponse|RedirectRespons ); } - public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { [$item, $id] = $this->itemAndIdFromRequest($id); @@ -1435,7 +1435,7 @@ public function bulkPublish(): JsonResponse ); } - public function duplicate(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function duplicate(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { [$item, $id] = $this->itemAndIdFromRequest($id); @@ -1475,7 +1475,7 @@ public function duplicate(int|string|TwillModelContract $id, ?int $submoduleId = ); } - public function destroy(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function destroy(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { [$item, $id] = $this->itemAndIdFromRequest($id); diff --git a/src/Http/Controllers/Admin/RoleController.php b/src/Http/Controllers/Admin/RoleController.php index 70d0f125b..9bd54c71e 100644 --- a/src/Http/Controllers/Admin/RoleController.php +++ b/src/Http/Controllers/Admin/RoleController.php @@ -87,7 +87,7 @@ protected function indexItemData($item): array return ['edit' => $canEdit ? $this->getModuleRoute($item->id, 'edit') : null]; } - public function index(?int $parentModuleId = null): mixed + public function index(int|string|null $parentModuleId = null): mixed { // Superadmins can reorder groups to determine the access-level of each one. // A given group can't edit other groups with a higher access-level. @@ -103,7 +103,7 @@ public function edit(int|string|TwillModelContract $id): mixed return parent::edit($id); } - public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { $this->authorizableOptions['edit'] = 'edit-role'; diff --git a/src/Http/Controllers/Admin/SingletonModuleController.php b/src/Http/Controllers/Admin/SingletonModuleController.php index d00403ce5..b47dd451c 100644 --- a/src/Http/Controllers/Admin/SingletonModuleController.php +++ b/src/Http/Controllers/Admin/SingletonModuleController.php @@ -11,7 +11,7 @@ abstract class SingletonModuleController extends ModuleController { protected $permalinkBase = ''; - public function index(?int $parentModuleId = null): mixed + public function index(int|string|null $parentModuleId = null): mixed { throw new \Exception("{$this->getModelName()} has no index"); } diff --git a/src/Http/Controllers/Admin/UserController.php b/src/Http/Controllers/Admin/UserController.php index fb8cc58ec..1f2c0e273 100755 --- a/src/Http/Controllers/Admin/UserController.php +++ b/src/Http/Controllers/Admin/UserController.php @@ -296,7 +296,7 @@ public function edit(int|string|TwillModelContract $id): mixed return parent::edit($id); } - public function update(int|string|TwillModelContract $id, ?int $submoduleId = null): JsonResponse + public function update(int|string|TwillModelContract $id, int|string|null $submoduleId = null): JsonResponse { $this->authorizableOptions['edit'] = 'edit-user'; From 4139ba58b70c781e6475ee9c42dbc030a7700e7f Mon Sep 17 00:00:00 2001 From: yamaha252 Date: Tue, 1 Aug 2023 13:37:33 +0500 Subject: [PATCH 3/4] uuid models support for breadcrumbs --- src/Services/Breadcrumbs/NestedBreadcrumbs.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Services/Breadcrumbs/NestedBreadcrumbs.php b/src/Services/Breadcrumbs/NestedBreadcrumbs.php index 25372f2e4..05ecced9f 100644 --- a/src/Services/Breadcrumbs/NestedBreadcrumbs.php +++ b/src/Services/Breadcrumbs/NestedBreadcrumbs.php @@ -10,7 +10,7 @@ class NestedBreadcrumbs extends Breadcrumbs private string $parentModule; private string $module; private string $parentRepository; - private int $activeParentId; + private int|string $activeParentId; private string $titleKey; private string $label; @@ -24,7 +24,7 @@ public function parentLabel(string $parentLabel): self public function forParent( string $parentModule, string $module, - int $activeParentId, + int|string $activeParentId, string $repository, ?string $titleKey = 'title' ): self { From 1ec96f1c9712f49992ecaa14b937cd103436c043 Mon Sep 17 00:00:00 2001 From: yamaha252 Date: Sat, 1 Jun 2024 23:47:05 +0500 Subject: [PATCH 4/4] optional uuid support migrations --- config/enabled.php | 1 + .../2_getting-started/3_configuration.md | 1 + ...29_update_activity_log_subject_id_type.php | 0 ...5319_update_mediables_mediable_id_type.php | 38 ++++++++++++++++ ...5348_update_fileables_fileable_id_type.php | 38 ++++++++++++++++ ...ate_related_subject_id_related_id_type.php | 44 +++++++++++++++++++ ...175500_update_blocks_blockable_id_type.php | 38 ++++++++++++++++ src/TwillServiceProvider.php | 1 + 8 files changed, 161 insertions(+) rename migrations/{default => optional/uuid-models-key-support}/2023_07_28_114329_update_activity_log_subject_id_type.php (100%) create mode 100644 migrations/optional/uuid-models-key-support/2024_06_01_175319_update_mediables_mediable_id_type.php create mode 100644 migrations/optional/uuid-models-key-support/2024_06_01_175348_update_fileables_fileable_id_type.php create mode 100644 migrations/optional/uuid-models-key-support/2024_06_01_175430_update_related_subject_id_related_id_type.php create mode 100644 migrations/optional/uuid-models-key-support/2024_06_01_175500_update_blocks_blockable_id_type.php diff --git a/config/enabled.php b/config/enabled.php index f550accee..892d5291c 100644 --- a/config/enabled.php +++ b/config/enabled.php @@ -24,4 +24,5 @@ 'users-2fa' => false, 'users-oauth' => false, 'permissions-management' => false, + 'uuid-models-key-support' => false, ]; diff --git a/docs/content/1_docs/2_getting-started/3_configuration.md b/docs/content/1_docs/2_getting-started/3_configuration.md index 5bfc125fd..3bd2ea7ca 100644 --- a/docs/content/1_docs/2_getting-started/3_configuration.md +++ b/docs/content/1_docs/2_getting-started/3_configuration.md @@ -27,6 +27,7 @@ return [ 'users-2fa' => false, 'users-oauth' => false, 'permissions-management' => false, + 'uuid-models-key-support' => false, ], ]; ``` diff --git a/migrations/default/2023_07_28_114329_update_activity_log_subject_id_type.php b/migrations/optional/uuid-models-key-support/2023_07_28_114329_update_activity_log_subject_id_type.php similarity index 100% rename from migrations/default/2023_07_28_114329_update_activity_log_subject_id_type.php rename to migrations/optional/uuid-models-key-support/2023_07_28_114329_update_activity_log_subject_id_type.php diff --git a/migrations/optional/uuid-models-key-support/2024_06_01_175319_update_mediables_mediable_id_type.php b/migrations/optional/uuid-models-key-support/2024_06_01_175319_update_mediables_mediable_id_type.php new file mode 100644 index 000000000..30a012b91 --- /dev/null +++ b/migrations/optional/uuid-models-key-support/2024_06_01_175319_update_mediables_mediable_id_type.php @@ -0,0 +1,38 @@ +string('mediable_id', 36)->change(); + } + }); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableName = config('twill.mediables_table', 'twill_mediables'); + if (Schema::hasTable($tableName)) { + Schema::table($tableName, function (Blueprint $table) use ($tableName) { + if (Schema::hasColumn($tableName, 'mediable_id')) { + $table->bigInteger('mediable_id')->change(); + } + }); + } + } +}; diff --git a/migrations/optional/uuid-models-key-support/2024_06_01_175348_update_fileables_fileable_id_type.php b/migrations/optional/uuid-models-key-support/2024_06_01_175348_update_fileables_fileable_id_type.php new file mode 100644 index 000000000..4f45f7651 --- /dev/null +++ b/migrations/optional/uuid-models-key-support/2024_06_01_175348_update_fileables_fileable_id_type.php @@ -0,0 +1,38 @@ +string('fileable_id', 36)->change(); + } + }); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableName = config('twill.fileables_table', 'twill_fileables'); + if (Schema::hasTable($tableName)) { + Schema::table($tableName, function (Blueprint $table) use ($tableName) { + if (Schema::hasColumn($tableName, 'fileable_id')) { + $table->bigInteger('fileable_id')->change(); + } + }); + } + } +}; diff --git a/migrations/optional/uuid-models-key-support/2024_06_01_175430_update_related_subject_id_related_id_type.php b/migrations/optional/uuid-models-key-support/2024_06_01_175430_update_related_subject_id_related_id_type.php new file mode 100644 index 000000000..085df5586 --- /dev/null +++ b/migrations/optional/uuid-models-key-support/2024_06_01_175430_update_related_subject_id_related_id_type.php @@ -0,0 +1,44 @@ +string('subject_id', 36)->change(); + } + if (Schema::hasColumn($tableName, 'related_id')) { + $table->string('related_id', 36)->change(); + } + }); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableName = config('twill.related_table', 'twill_related'); + if (Schema::hasTable($tableName)) { + Schema::table($tableName, function (Blueprint $table) use ($tableName) { + if (Schema::hasColumn($tableName, 'subject_id')) { + $table->bigInteger('subject_id')->change(); + } + if (Schema::hasColumn($tableName, 'related_id')) { + $table->bigInteger('related_id')->change(); + } + }); + } + } +}; diff --git a/migrations/optional/uuid-models-key-support/2024_06_01_175500_update_blocks_blockable_id_type.php b/migrations/optional/uuid-models-key-support/2024_06_01_175500_update_blocks_blockable_id_type.php new file mode 100644 index 000000000..1933b6b51 --- /dev/null +++ b/migrations/optional/uuid-models-key-support/2024_06_01_175500_update_blocks_blockable_id_type.php @@ -0,0 +1,38 @@ +string('blockable_id', 36)->change(); + } + }); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + $tableName = config('twill.blocks_table', 'twill_blocks'); + if (Schema::hasTable($tableName)) { + Schema::table($tableName, function (Blueprint $table) use ($tableName) { + if (Schema::hasColumn($tableName, 'blockable_id')) { + $table->bigInteger('blockable_id')->change(); + } + }); + } + } +}; diff --git a/src/TwillServiceProvider.php b/src/TwillServiceProvider.php index e0eb445ee..0d9721135 100644 --- a/src/TwillServiceProvider.php +++ b/src/TwillServiceProvider.php @@ -325,6 +325,7 @@ private function publishMigrations(): void $this->publishOptionalMigration('users-2fa'); $this->publishOptionalMigration('users-oauth'); $this->publishOptionalMigration('permissions-management'); + $this->publishOptionalMigration('uuid-models-key-support'); } private function publishOptionalMigration($feature): void