mirror of
https://github.com/crivion/laranode.git
synced 2026-05-07 22:20:44 +08:00
83 lines
2.4 KiB
PHP
83 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\MySQL\GetCharsetsAndCollationsAction;
|
|
use App\Actions\MySQL\GetDatabasesWithStatsAction;
|
|
use App\Http\Requests\CreateDatabaseRequest;
|
|
use App\Http\Requests\DeleteDatabaseRequest;
|
|
use App\Http\Requests\UpdateDatabaseRequest;
|
|
use App\Models\Database;
|
|
use App\Services\MySQL\CreateDatabaseService;
|
|
use App\Services\MySQL\DeleteDatabaseService;
|
|
use App\Services\MySQL\UpdateDatabaseService;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Inertia\Inertia;
|
|
|
|
class MysqlController extends Controller
|
|
{
|
|
public function index(Request $request): \Inertia\Response
|
|
{
|
|
$user = $request->user();
|
|
$databases = (new GetDatabasesWithStatsAction($user))->execute();
|
|
|
|
return Inertia::render('Mysql/Index', [
|
|
'databases' => $databases,
|
|
]);
|
|
}
|
|
|
|
public function getCharsetsAndCollations(GetCharsetsAndCollationsAction $action): JsonResponse
|
|
{
|
|
return response()->json($action->execute());
|
|
}
|
|
|
|
public function store(CreateDatabaseRequest $request): RedirectResponse
|
|
{
|
|
$user = $request->user();
|
|
|
|
(new CreateDatabaseService($request->validated(), $user))->handle();
|
|
|
|
session()->flash('success', 'Database created successfully!');
|
|
|
|
return redirect()->route('mysql.index');
|
|
}
|
|
|
|
public function update(UpdateDatabaseRequest $request): RedirectResponse
|
|
{
|
|
$user = $request->user();
|
|
$databaseId = $request->integer('id');
|
|
|
|
$database = Database::where('id', $databaseId)
|
|
->where('user_id', $user->id)
|
|
->firstOrFail();
|
|
|
|
$this->authorize('update', $database);
|
|
|
|
(new UpdateDatabaseService($database, $request->validated()))->handle();
|
|
|
|
session()->flash('success', 'Database updated successfully!');
|
|
|
|
return redirect()->route('mysql.index');
|
|
}
|
|
|
|
public function destroy(DeleteDatabaseRequest $request): RedirectResponse
|
|
{
|
|
$user = $request->user();
|
|
$databaseId = $request->integer('id');
|
|
|
|
$database = Database::where('id', $databaseId)
|
|
->where('user_id', $user->id)
|
|
->firstOrFail();
|
|
|
|
$this->authorize('delete', $database);
|
|
|
|
(new DeleteDatabaseService($database))->handle();
|
|
|
|
session()->flash('success', 'Database deleted successfully!');
|
|
|
|
return redirect()->route('mysql.index');
|
|
}
|
|
}
|