Merge branch 'develop'

# Conflicts:
#	public/js/app.js
This commit is contained in:
Dennis
2022-01-21 13:57:04 +01:00
13 changed files with 30818 additions and 3127 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\Server;
use App\Models\User;
use Illuminate\Http\Request;
use App\Jobs\Servers\CreateServer;
@@ -38,7 +39,8 @@ class ServerController extends Controller
/* @var $server \App\Models\Server */
$server = $request->user()->servers()->create([
'name' => $request->input('name')
'name' => $request->input('name'),
'database_type' => $request->input('database_type', 'mysql')
]);
$server->provider()->associate($provider);
@@ -65,6 +67,10 @@ class ServerController extends Controller
{
$server = auth()->user()->servers()->findOrFail($id);
if ($server->status === Server::STATUS_BUSY) {
return redirect()->back()->with('info', 'This server is currently busy, please check back later.');
}
return inertia('Servers/Show', [
'server' => $server,
'sites' => $server->sites()->latest()->paginate(5, ['*'], 'sites_per_page'),

View File

@@ -4,6 +4,7 @@ namespace App\Http\Requests;
use App\Models\Server;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class ServerRequest extends FormRequest
{
@@ -45,6 +46,11 @@ class ServerRequest extends FormRequest
'required',
'not_in:0',
'exists:provider_plans,id'
],
'database_type' => [
'required',
'string',
Rule::in(['mysql', 'mariadb', 'postgresql', 'postgresql13'])
]
];
}

View File

@@ -17,21 +17,11 @@ class CreateServer implements ShouldQueue
public $server;
public $tries = 1;
/**
* Create a new job instance.
*
* @param Server $server
*/
public function __construct(Server $server)
{
$this->server = $server;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$ploiServer = $this->getPloi()->server()->create(
@@ -39,12 +29,14 @@ class CreateServer implements ShouldQueue
$this->server->provider->ploi_id,
$this->server->providerRegion->region_id,
$this->server->providerPlan->plan_id,
'server',
$this->server->database_type
);
$this->server->ploi_id = $ploiServer->id;
$this->server->save();
// Lets fetch the status after 5 minutes
// Let's fetch the status after 5 minutes
dispatch(new FetchServerStatus($this->server))->delay(now()->addMinutes(5));
}

View File

@@ -17,7 +17,8 @@ class Server extends Model
'internal_ip',
'ssh_port',
'maximum_sites',
'available_php_versions'
'available_php_versions',
'database_type'
];
protected $casts = [

View File

@@ -63,7 +63,11 @@ class Server extends Resource
string $name,
$provider,
$region,
$plan
$plan,
$type = 'server',
$databaseType = 'mysql',
$webserverType = 'nginx',
$phpVersion = '7.4'
): stdClass {
// Remove the id
@@ -76,10 +80,10 @@ class Server extends Resource
'plan' => $plan,
'region' => $region,
'credential' => $provider,
'type' => 'server',
'database_type' => 'mysql',
'webserver_type' => 'nginx',
'php_version' => '7.4'
'type' => $type,
'database_type' => $databaseType,
'webserver_type' => $webserverType,
'php_version' => $phpVersion
]),
];

View File

@@ -16,9 +16,9 @@
"fruitcake/laravel-cors": "^1.0",
"guzzlehttp/guzzle": "^6.2|^7.0.1",
"inertiajs/inertia-laravel": "^v0.4.3",
"laravel/cashier": "^12.3",
"laravel/framework": "^8.4",
"laravel/horizon": "^5.0",
"laravel/cashier": "^12.16",
"laravel/framework": "^v8.80.0",
"laravel/horizon": "^5.8",
"laravel/tinker": "^2.0",
"laravel/ui": "^2.1|^3.3.0",
"league/glide": "^1.6",

672
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddColumnsToServersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('servers', function (Blueprint $table) {
$table->after('available_php_versions', function (Blueprint $table) {
$table->string('type')->default('server');
$table->string('database_type')->default('mysql');
});
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('type', 'database_type');
});
}
}

5830
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,7 @@
"axios": "^0.21.1",
"balloon-css": "^1.2.0",
"cross-env": "^7.0.3",
"laravel-mix": "^6.0.25",
"laravel-mix": "^6.0.41",
"lodash": "^4.17.15",
"portal-vue": "^2.1.7",
"postcss": "^8.4.5",
@@ -30,7 +30,7 @@
"v-click-outside": "^3.1.2",
"vue": "^2.6.11",
"vue-clipboard2": "^0.3.1",
"vue-loader": "^15.9.6",
"vue-loader": "^15.9.8",
"vue-meta": "^2.4.0",
"vue-template-compiler": "^2.6.11",
"vuex": "^3.6.2"

27338
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -26,6 +26,14 @@
<option :value="`${null}`">{{ __('Select random plan') }}</option>
<option v-for="(name, id) in plans" :value="id">{{ name }}</option>
</FormSelect>
<FormSelect :loading="loading" :errors="$page.props.errors.database_type" :label="__('Select database type')"
v-model="form.database_type">
<option value="mysql">{{ __('MySQL 5.7') }}</option>
<option value="mariadb">{{ __('MariaDB') }}</option>
<option value="postgresql">{{ __('PostgreSQL') }}</option>
<option value="postgresql13">{{ __('PostgreSQL 13') }}</option>
</FormSelect>
</template>
<template #form-actions>
@@ -71,7 +79,7 @@
<DropdownList :position="position" v-if="isOpen">
<DropdownListItem :to="route('servers.show', server.id)">View</DropdownListItem>
<DropdownListItemButton v-if="can('servers', 'delete')" class="text-danger"
<DropdownListItemButton v-if="can('servers', 'delete')" class="!text-danger"
@click="confirmDelete(server)">
Delete
</DropdownListItemButton>
@@ -219,6 +227,7 @@ export default {
provider: null,
region: null,
plan: null,
database_type: 'mysql'
},
providers: this.dataProviders,
@@ -254,7 +263,7 @@ export default {
},
poll() {
this.$inertia.replace(this.route('servers.index'), {
this.$inertia.get(this.route('servers.index'), {}, {
only: ['servers'],
preserveScroll: true,
})

View File

@@ -56,7 +56,7 @@
<DropdownList :position="position" v-if="isOpen">
<DropdownListItem :to="route('sites.show', site.id)">{{ __('View') }}</DropdownListItem>
<DropdownListItemButton v-if="can('sites', 'delete')" class="text-danger" @click="confirmDelete(site)">{{ __('Delete') }}</DropdownListItemButton>
<DropdownListItemButton v-if="can('sites', 'delete')" class="!text-danger" @click="confirmDelete(site)">{{ __('Delete') }}</DropdownListItemButton>
</DropdownList>
</Dropdown>
</template>