diff --git a/stub/composer.json b/stub/composer.json index cbc4930..9132899 100644 --- a/stub/composer.json +++ b/stub/composer.json @@ -21,10 +21,10 @@ "resources/database/migrations" ], "seeders": [ - "resources/database/seeders" + "resources/database/seeds/DatabaseSeeder.php" ], "unseeders": [ - "resources/database/unseeders" + "resources/database/unseeds/DatabaseUnseeder.php" ], "assets": { "resources/assets": "public/vendor/kebab-case" diff --git a/stub/resources/database/seeders/.gitkeep b/stub/resources/database/seeds/.gitkeep similarity index 100% rename from stub/resources/database/seeders/.gitkeep rename to stub/resources/database/seeds/.gitkeep diff --git a/stub/resources/database/seeds/DatabaseSeeder.php b/stub/resources/database/seeds/DatabaseSeeder.php new file mode 100644 index 0000000..22c9746 --- /dev/null +++ b/stub/resources/database/seeds/DatabaseSeeder.php @@ -0,0 +1,23 @@ +seed('StudlyCaseTableSeeder'); + $this->seed('MenuItemsTableSeeder'); + $this->seed('PermissionsTableSeeder'); + } +} diff --git a/stub/resources/database/seeds/MenuItemsTableSeeder.php b/stub/resources/database/seeds/MenuItemsTableSeeder.php new file mode 100644 index 0000000..2c947b8 --- /dev/null +++ b/stub/resources/database/seeds/MenuItemsTableSeeder.php @@ -0,0 +1,44 @@ +firstOrFail(); + + $url = '/admin/snake_case'; + + // Skip if already exists + if (MenuItem::where('menu_id', $menu->id)->where('url', $url)->first()) { + return; + } + + // Return next order index + $lastItem = MenuItem::select('order') + ::where('menu_id', $menu->id) + ->where('url', $url) + ->orderBy('order', 'desc') + ->first(); + + // Add menu item + MenuItem::create([ + 'menu_id' => $menu->id, + 'url' => $url, + 'title' => 'snake_case', + 'target' => '_self', + 'icon_class' => 'voyager-megaphone', + 'color' => null, + 'parent_id' => null, + 'order' => $lastItem->order, + ]); + } +} diff --git a/stub/resources/database/seeds/PermissionsTableSeeder.php b/stub/resources/database/seeds/PermissionsTableSeeder.php new file mode 100644 index 0000000..379cfa1 --- /dev/null +++ b/stub/resources/database/seeds/PermissionsTableSeeder.php @@ -0,0 +1,31 @@ +first()) { + return; + } + + Permission::generateFor('snake_case'); + + $role = Role::where('name', 'admin')->first(); + + if (!is_null($role)) { + $role->permissions()->attach( + Permission::where('table_name', 'snake_case')->pluck('id')->all() + ); + } + } +} diff --git a/stub/resources/database/seeders/StudlyCaseTableSeeder.php b/stub/resources/database/seeds/StudlyCaseTableSeeder.php similarity index 100% rename from stub/resources/database/seeders/StudlyCaseTableSeeder.php rename to stub/resources/database/seeds/StudlyCaseTableSeeder.php diff --git a/stub/resources/database/unseeders/.gitkeep b/stub/resources/database/unseeds/.gitkeep similarity index 100% rename from stub/resources/database/unseeders/.gitkeep rename to stub/resources/database/unseeds/.gitkeep diff --git a/stub/resources/database/unseeds/DatabaseUnseeder.php b/stub/resources/database/unseeds/DatabaseUnseeder.php new file mode 100644 index 0000000..e0dc057 --- /dev/null +++ b/stub/resources/database/unseeds/DatabaseUnseeder.php @@ -0,0 +1,18 @@ +seed('StudlyCaseTableSeeder'); + $this->seed('MenuItemsTableUnseeder'); + $this->seed('PermissionsTableUnseeder'); + } +} diff --git a/stub/resources/database/unseeds/MenuItemsTableUnseeder.php b/stub/resources/database/unseeds/MenuItemsTableUnseeder.php new file mode 100644 index 0000000..c48df0b --- /dev/null +++ b/stub/resources/database/unseeds/MenuItemsTableUnseeder.php @@ -0,0 +1,24 @@ +firstOrFail(); + + MenuItem::where('menu_id', $menu->id) + ->where('url', $url) + ->delete(); + } +} diff --git a/stub/resources/database/unseeds/PermissionsTableUnseeder.php b/stub/resources/database/unseeds/PermissionsTableUnseeder.php new file mode 100644 index 0000000..9b12695 --- /dev/null +++ b/stub/resources/database/unseeds/PermissionsTableUnseeder.php @@ -0,0 +1,17 @@ +