feat: init postgresql database

This commit is contained in:
Andras Bacsai
2023-08-07 18:46:40 +02:00
parent 0a040a0531
commit a020bc872d
38 changed files with 430 additions and 66 deletions

View File

@@ -84,4 +84,4 @@ class ApplicationController extends Controller
'deployment_uuid' => $deploymentUuid,
]);
}
}
}

View File

@@ -43,7 +43,9 @@ class Controller extends BaseController
$s3s = S3Storage::ownedByCurrentTeam()->get();
$resources = 0;
foreach ($projects as $project) {
ray($project->postgresqls);
$resources += $project->applications->count();
$resources += $project->postgresqls->count();
}
return view('dashboard', [

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Controllers;
use App\Models\ApplicationDeploymentQueue;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Spatie\Activitylog\Models\Activity;
class DatabaseController extends Controller
{
use AuthorizesRequests, ValidatesRequests;
public function configuration()
{
$project = session('currentTeam')->load(['projects'])->projects->where('uuid', request()->route('project_uuid'))->first();
if (!$project) {
return redirect()->route('dashboard');
}
$environment = $project->load(['environments'])->environments->where('name', request()->route('environment_name'))->first()->load(['applications']);
if (!$environment) {
return redirect()->route('dashboard');
}
$database = $environment->databases->where('uuid', request()->route('database_uuid'))->first();
if (!$database) {
return redirect()->route('dashboard');
}
return view('project.database.configuration', ['database' => $database]);
}
}

View File

@@ -51,4 +51,4 @@ class ActivityMonitor extends Component
]);
$this->activity->save();
}
}
}

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Http\Livewire;
namespace App\Http\Livewire\Dev;
use App\Models\S3Storage;
use Illuminate\Support\Facades\Storage;
@@ -14,7 +14,6 @@ class S3Test extends Component
public $file;
public function mount() {
$this->s3 = S3Storage::first();
ray($this->s3);
}
public function save() {
try {

View File

@@ -33,6 +33,7 @@ class General extends Component
protected $rules = [
'application.name' => 'required',
'application.description' => 'nullable',
'application.fqdn' => 'nullable',
'application.git_repository' => 'required',
'application.git_branch' => 'required',
@@ -49,6 +50,7 @@ class General extends Component
];
protected $validationAttributes = [
'application.name' => 'name',
'application.description' => 'description',
'application.fqdn' => 'FQDN',
'application.git_repository' => 'Git repository',
'application.git_branch' => 'Git branch',

View File

@@ -1,6 +1,6 @@
<?php
namespace App\Http\Livewire\Application;
namespace App\Http\Livewire\Project\Application;
use App\Jobs\ApplicationContainerStatusJob;
use App\Models\Application;

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Livewire\Project\Database;
use Livewire\Component;
use App\Actions\Database\StartPostgresql;
class Heading extends Component
{
public $database;
public array $parameters;
public function mount()
{
$this->parameters = getRouteParameters();
}
public function start() {
if ($this->database->type() === 'postgresql') {
$activity = resolve(StartPostgresql::class)($this->database->destination->server, $this->database);
$this->emit('newMonitorActivity', $activity->id);
}
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Http\Livewire\Project\Database\Postgresql;
use Livewire\Component;
class General extends Component
{
public $database;
protected $rules = [
'database.name' => 'required',
'database.description' => 'nullable',
'database.postgres_user' => 'required',
'database.postgres_password' => 'required',
'database.postgres_db' => 'required',
'database.postgres_initdb_args' => 'nullable',
'database.postgres_host_auth_method' => 'nullable',
'database.init_scripts' => 'nullable',
];
protected $validationAttributes = [
'database.name' => 'Name',
'database.description' => 'Description',
'database.postgres_user' => 'Postgres User',
'database.postgres_password' => 'Postgres Password',
'database.postgres_db' => 'Postgres DB',
'database.postgres_initdb_args' => 'Postgres Initdb Args',
'database.postgres_host_auth_method' => 'Postgres Host Auth Method',
'database.init_scripts' => 'Init Scripts',
];
public function submit() {
try {
$this->validate();
$this->database->save();
$this->emit('success', 'Database updated successfully.');
} catch (\Exception $e) {
return general_error_handler(err: $e, that: $this);
}
}
}