From 449279afc2af3bd0640bf535687bb9028540c852 Mon Sep 17 00:00:00 2001 From: Seth Sharp Date: Wed, 24 Apr 2024 06:55:37 +1000 Subject: [PATCH] slug is nullable and add validation on column size --- ...lter_slug_to_be_nullable_on_blogs_table.php | 18 ++++++++++++++++++ src/Actions/Blogs/UpdateBlogAction.php | 9 ++++++--- src/Requests/Blogs/UpdateBlogRequest.php | 5 +++++ 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 database/migrations/2024_04_23_204359_alter_slug_to_be_nullable_on_blogs_table.php diff --git a/database/migrations/2024_04_23_204359_alter_slug_to_be_nullable_on_blogs_table.php b/database/migrations/2024_04_23_204359_alter_slug_to_be_nullable_on_blogs_table.php new file mode 100644 index 0000000..fa805cd --- /dev/null +++ b/database/migrations/2024_04_23_204359_alter_slug_to_be_nullable_on_blogs_table.php @@ -0,0 +1,18 @@ +string('slug')->nullable()->change(); + }); + } +}; + diff --git a/src/Actions/Blogs/UpdateBlogAction.php b/src/Actions/Blogs/UpdateBlogAction.php index b73a3cd..8be5ceb 100644 --- a/src/Actions/Blogs/UpdateBlogAction.php +++ b/src/Actions/Blogs/UpdateBlogAction.php @@ -21,10 +21,13 @@ class UpdateBlogAction public function __invoke(Blog $blog, UpdateBlogRequest $updateBlogRequest): Blog { // setup slug based on provided input - if ($updateBlogRequest->has('slug')) { - $slug = Str::slug($updateBlogRequest->input('slug')); - } else { + $slug = $updateBlogRequest->input('slug'); + if (is_null($slug)) { $slug = Str::slug($updateBlogRequest->input('title')); + } else { + if (strlen($slug) === 0) { + $slug = Str::slug($updateBlogRequest->input('title')); + } } // attach tags diff --git a/src/Requests/Blogs/UpdateBlogRequest.php b/src/Requests/Blogs/UpdateBlogRequest.php index 15f2873..82c931b 100644 --- a/src/Requests/Blogs/UpdateBlogRequest.php +++ b/src/Requests/Blogs/UpdateBlogRequest.php @@ -25,6 +25,7 @@ public function rules(): array 'title' => [ 'required', 'string', + 'max:254', Rule::unique(Blog::class, 'title')->ignore($this->route('blog')->id), ], 'collection_id' => [ @@ -37,6 +38,7 @@ public function rules(): array 'nullable', 'string', 'min:10', + 'max:254', Rule::unique(Blog::class, 'slug')->ignore($this->route('blog')->id), ], 'tags' => [ @@ -47,16 +49,19 @@ public function rules(): array 'nullable', 'required_if:is_draft,false', 'string', + 'max:254', ], 'meta_tags' => [ 'nullable', 'required_if:is_draft,false', 'string', + 'max:254', ], 'meta_description' => [ 'nullable', 'required_if:is_draft,false', 'string', + 'max:254', ], 'content' => [ 'required_if:is_draft,false',