99
1010namespace Pterodactyl \Http \Controllers \Admin ;
1111
12- use Pterodactyl \Models \DatabaseHost ;
12+ use PDOException ;
13+ use Illuminate \View \View ;
14+ use Illuminate \Http \RedirectResponse ;
1315use Prologue \Alerts \AlertsMessageBag ;
1416use Pterodactyl \Http \Controllers \Controller ;
15- use Pterodactyl \Services \Database \ DatabaseHostService ;
17+ use Pterodactyl \Services \Databases \ Hosts \ HostUpdateService ;
1618use Pterodactyl \Http \Requests \Admin \DatabaseHostFormRequest ;
19+ use Pterodactyl \Services \Databases \Hosts \HostCreationService ;
20+ use Pterodactyl \Services \Databases \Hosts \HostDeletionService ;
1721use Pterodactyl \Contracts \Repository \LocationRepositoryInterface ;
1822use Pterodactyl \Contracts \Repository \DatabaseHostRepositoryInterface ;
1923
@@ -22,49 +26,65 @@ class DatabaseController extends Controller
2226 /**
2327 * @var \Prologue\Alerts\AlertsMessageBag
2428 */
25- protected $ alert ;
29+ private $ alert ;
30+
31+ /**
32+ * @var \Pterodactyl\Services\Databases\Hosts\HostCreationService
33+ */
34+ private $ creationService ;
35+
36+ /**
37+ * @var \Pterodactyl\Services\Databases\Hosts\HostDeletionService
38+ */
39+ private $ deletionService ;
2640
2741 /**
2842 * @var \Pterodactyl\Contracts\Repository\LocationRepositoryInterface
2943 */
30- protected $ locationRepository ;
44+ private $ locationRepository ;
3145
3246 /**
3347 * @var \Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface
3448 */
35- protected $ repository ;
49+ private $ repository ;
3650
3751 /**
38- * @var \Pterodactyl\Services\Database\DatabaseHostService
52+ * @var \Pterodactyl\Services\Databases\Hosts\HostUpdateService
3953 */
40- protected $ service ;
54+ private $ updateService ;
4155
4256 /**
4357 * DatabaseController constructor.
4458 *
4559 * @param \Prologue\Alerts\AlertsMessageBag $alert
4660 * @param \Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface $repository
47- * @param \Pterodactyl\Services\Database\DatabaseHostService $service
61+ * @param \Pterodactyl\Services\Databases\Hosts\HostCreationService $creationService
62+ * @param \Pterodactyl\Services\Databases\Hosts\HostDeletionService $deletionService
63+ * @param \Pterodactyl\Services\Databases\Hosts\HostUpdateService $updateService
4864 * @param \Pterodactyl\Contracts\Repository\LocationRepositoryInterface $locationRepository
4965 */
5066 public function __construct (
5167 AlertsMessageBag $ alert ,
5268 DatabaseHostRepositoryInterface $ repository ,
53- DatabaseHostService $ service ,
69+ HostCreationService $ creationService ,
70+ HostDeletionService $ deletionService ,
71+ HostUpdateService $ updateService ,
5472 LocationRepositoryInterface $ locationRepository
5573 ) {
5674 $ this ->alert = $ alert ;
75+ $ this ->creationService = $ creationService ;
76+ $ this ->deletionService = $ deletionService ;
5777 $ this ->repository = $ repository ;
58- $ this ->service = $ service ;
5978 $ this ->locationRepository = $ locationRepository ;
79+ $ this ->updateService = $ updateService ;
6080 }
6181
6282 /**
6383 * Display database host index.
6484 *
6585 * @return \Illuminate\View\View
6686 */
67- public function index ()
87+ public function index (): View
6888 {
6989 return view ('admin.databases.index ' , [
7090 'locations ' => $ this ->locationRepository ->getAllWithNodes (),
@@ -80,7 +100,7 @@ public function index()
80100 *
81101 * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
82102 */
83- public function view ($ host )
103+ public function view ($ host ): View
84104 {
85105 return view ('admin.databases.view ' , [
86106 'locations ' => $ this ->locationRepository ->getAllWithNodes (),
@@ -94,42 +114,41 @@ public function view($host)
94114 * @param \Pterodactyl\Http\Requests\Admin\DatabaseHostFormRequest $request
95115 * @return \Illuminate\Http\RedirectResponse
96116 *
97- * @throws \Throwable
117+ * @throws \Pterodactyl\Exceptions\Model\DataValidationException
118+ * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
98119 */
99- public function create (DatabaseHostFormRequest $ request )
120+ public function create (DatabaseHostFormRequest $ request ): RedirectResponse
100121 {
101122 try {
102- $ host = $ this ->service ->create ($ request ->normalize ());
103- $ this ->alert ->success ('Successfully created a new database host on the system. ' )->flash ();
104-
105- return redirect ()->route ('admin.databases.view ' , $ host ->id );
106- } catch (\PDOException $ ex ) {
123+ $ host = $ this ->creationService ->handle ($ request ->normalize ());
124+ } catch (PDOException $ ex ) {
107125 $ this ->alert ->danger ($ ex ->getMessage ())->flash ();
126+
127+ return redirect ()->route ('admin.databases ' );
108128 }
109129
110- return redirect ()->route ('admin.databases ' );
130+ $ this ->alert ->success ('Successfully created a new database host on the system. ' )->flash ();
131+
132+ return redirect ()->route ('admin.databases.view ' , $ host ->id );
111133 }
112134
113135 /**
114136 * Handle updating database host.
115137 *
116138 * @param \Pterodactyl\Http\Requests\Admin\DatabaseHostFormRequest $request
117- * @param \Pterodactyl\Models\DatabaseHost $host
139+ * @param int $host
118140 * @return \Illuminate\Http\RedirectResponse
119141 *
120142 * @throws \Pterodactyl\Exceptions\DisplayException
121143 * @throws \Pterodactyl\Exceptions\Model\DataValidationException
144+ * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
122145 */
123- public function update (DatabaseHostFormRequest $ request , DatabaseHost $ host )
146+ public function update (DatabaseHostFormRequest $ request , int $ host ): RedirectResponse
124147 {
125- if ($ request ->input ('action ' ) === 'delete ' ) {
126- return $ this ->delete ($ host );
127- }
128-
129148 try {
130- $ host = $ this ->service -> update ($ host-> id , $ request ->normalize ());
149+ $ host = $ this ->updateService -> handle ($ host , $ request ->normalize ());
131150 $ this ->alert ->success ('Database host was updated successfully. ' )->flash ();
132- } catch (\ PDOException $ ex ) {
151+ } catch (PDOException $ ex ) {
133152 $ this ->alert ->danger ($ ex ->getMessage ())->flash ();
134153 }
135154
@@ -139,14 +158,14 @@ public function update(DatabaseHostFormRequest $request, DatabaseHost $host)
139158 /**
140159 * Handle request to delete a database host.
141160 *
142- * @param \Pterodactyl\Models\DatabaseHost $host
161+ * @param int $host
143162 * @return \Illuminate\Http\RedirectResponse
144163 *
145- * @throws \Pterodactyl\Exceptions\DisplayException
164+ * @throws \Pterodactyl\Exceptions\Service\HasActiveServersException
146165 */
147- public function delete (DatabaseHost $ host )
166+ public function delete (int $ host ): RedirectResponse
148167 {
149- $ this ->service -> delete ($ host-> id );
168+ $ this ->deletionService -> handle ($ host );
150169 $ this ->alert ->success ('The requested database host has been deleted from the system. ' )->flash ();
151170
152171 return redirect ()->route ('admin.databases ' );
0 commit comments