major ui updates
This commit is contained in:
+2
-4
@@ -6,11 +6,10 @@ use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
@@ -24,5 +23,4 @@ return new class extends Migration {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
+2
-3
@@ -6,8 +6,8 @@ use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/** @return void */
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('helpdesk_tickets', static function (Blueprint $table): void {
|
||||
@@ -38,5 +38,4 @@ return new class extends Migration {
|
||||
$table->index('last_activity_at');
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
+2
-3
@@ -6,8 +6,8 @@ use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/** @return void */
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('helpdesk_git_repositories', static function (Blueprint $table): void {
|
||||
@@ -75,5 +75,4 @@ return new class extends Migration {
|
||||
$table->index(['status', 'created_at']);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
+2
-3
@@ -6,8 +6,8 @@ use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/** @return void */
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('helpdesk_comments', static function (Blueprint $table): void {
|
||||
@@ -37,5 +37,4 @@ return new class extends Migration {
|
||||
$table->index(['ticket_id', 'comment_id', 'created_at']);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
-131
@@ -1,131 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration {
|
||||
/** @return void */
|
||||
public function up(): void
|
||||
{
|
||||
$this->addIndex('helpdesk_tickets', ['company_id', 'status_id'], 'hdesk_tickets_company_status_idx');
|
||||
$this->addIndex('helpdesk_tickets', ['company_id', 'priority_id'], 'hdesk_tickets_company_priority_idx');
|
||||
$this->addIndex('helpdesk_tickets', ['company_id', 'category_id'], 'hdesk_tickets_company_category_idx');
|
||||
$this->addIndex('helpdesk_tickets', ['company_id', 'team_id'], 'hdesk_tickets_company_team_idx');
|
||||
$this->addIndex('helpdesk_tickets', ['status_id', 'created_at'], 'hdesk_tickets_status_created_idx');
|
||||
$this->addIndex('helpdesk_tickets', ['due_at'], 'hdesk_tickets_due_at_idx');
|
||||
$this->addIndex('helpdesk_tickets', ['archived_at'], 'hdesk_tickets_archived_at_idx');
|
||||
|
||||
$this->addIndex('helpdesk_comments', ['parent_id', 'created_at'], 'hdesk_comments_parent_created_idx');
|
||||
$this->addIndex('helpdesk_comments', ['user_id', 'created_at'], 'hdesk_comments_user_created_idx');
|
||||
|
||||
$this->addIndex('helpdesk_attachments', ['ticket_id'], 'hdesk_attachments_ticket_idx');
|
||||
$this->addIndex('helpdesk_attachments', ['comment_id'], 'hdesk_attachments_comment_idx');
|
||||
$this->addIndex('helpdesk_attachments', ['user_id'], 'hdesk_attachments_user_idx');
|
||||
|
||||
if (Schema::hasTable('helpdesk_projects')) {
|
||||
$this->addIndex('helpdesk_projects', ['company_id', 'archived_at'], 'hdesk_projects_company_archived_idx');
|
||||
}
|
||||
|
||||
if (Schema::hasTable('helpdesk_teams')) {
|
||||
$this->addIndex('helpdesk_teams', ['company_id', 'archived_at'], 'hdesk_teams_company_archived_idx');
|
||||
}
|
||||
|
||||
if (Schema::hasTable('helpdesk_category_user')) {
|
||||
$this->addIndex('helpdesk_category_user', ['category_id', 'user_id'], 'hdesk_category_user_category_user_idx');
|
||||
$this->addIndex('helpdesk_category_user', ['user_id', 'category_id'], 'hdesk_category_user_user_category_idx');
|
||||
}
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function down(): void
|
||||
{
|
||||
foreach ([
|
||||
'helpdesk_tickets' => [
|
||||
'hdesk_tickets_company_status_idx',
|
||||
'hdesk_tickets_company_priority_idx',
|
||||
'hdesk_tickets_company_category_idx',
|
||||
'hdesk_tickets_company_team_idx',
|
||||
'hdesk_tickets_status_created_idx',
|
||||
'hdesk_tickets_due_at_idx',
|
||||
'hdesk_tickets_archived_at_idx',
|
||||
],
|
||||
'helpdesk_comments' => [
|
||||
'hdesk_comments_parent_created_idx',
|
||||
'hdesk_comments_user_created_idx',
|
||||
],
|
||||
'helpdesk_attachments' => [
|
||||
'hdesk_attachments_ticket_idx',
|
||||
'hdesk_attachments_comment_idx',
|
||||
'hdesk_attachments_user_idx',
|
||||
],
|
||||
'helpdesk_projects' => [
|
||||
'hdesk_projects_company_archived_idx',
|
||||
],
|
||||
'helpdesk_teams' => [
|
||||
'hdesk_teams_company_archived_idx',
|
||||
],
|
||||
'helpdesk_category_user' => [
|
||||
'hdesk_category_user_category_user_idx',
|
||||
'hdesk_category_user_user_category_idx',
|
||||
],
|
||||
] as $table => $indexes) {
|
||||
if (! Schema::hasTable($table)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Schema::table($table, function (Blueprint $tableBlueprint) use ($table, $indexes): void {
|
||||
foreach ($indexes as $index) {
|
||||
if ($this->indexExists($table, $index)) {
|
||||
$tableBlueprint->dropIndex($index);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an index only when the table exists and the named index does not exist.
|
||||
*
|
||||
* @param string $table
|
||||
* @param array<int, string> $columns
|
||||
* @param string $index
|
||||
* @return void
|
||||
*/
|
||||
private function addIndex(string $table, array $columns, string $index): void
|
||||
{
|
||||
if (! Schema::hasTable($table) || $this->indexExists($table, $index)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Schema::table($table, static function (Blueprint $tableBlueprint) use ($columns, $index): void {
|
||||
$tableBlueprint->index($columns, $index);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether an index exists for the current connection.
|
||||
*
|
||||
* @param string $table
|
||||
* @param string $index
|
||||
* @return bool
|
||||
*/
|
||||
private function indexExists(string $table, string $index): bool
|
||||
{
|
||||
if (method_exists(Schema::getFacadeRoot(), 'hasIndex')) {
|
||||
return Schema::hasIndex($table, $index);
|
||||
}
|
||||
|
||||
if (DB::getDriverName() === 'pgsql') {
|
||||
return DB::selectOne(
|
||||
'select 1 from pg_indexes where schemaname = current_schema() and tablename = ? and indexname = ? limit 1',
|
||||
[$table, $index]
|
||||
) !== null;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
if (! Schema::hasTable('helpdesk_kanban_boards')) {
|
||||
Schema::create('helpdesk_kanban_boards', function (Blueprint $table): void {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->string('slug')->unique();
|
||||
$table->text('description')->nullable();
|
||||
$table->boolean('is_default')->default(false);
|
||||
$table->unsignedInteger('sort_order')->default(0);
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
|
||||
$table->index(['is_default', 'sort_order']);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('helpdesk_kanban_boards');
|
||||
}
|
||||
};
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
if (! Schema::hasTable('helpdesk_kanban_board_statuses')) {
|
||||
Schema::create('helpdesk_kanban_board_statuses', function (Blueprint $table): void {
|
||||
$table->id();
|
||||
$table->foreignId('board_id')->constrained('helpdesk_kanban_boards')->cascadeOnDelete();
|
||||
$table->foreignId('status_id')->constrained('helpdesk_statuses')->cascadeOnDelete();
|
||||
$table->unsignedInteger('sort_order')->default(0);
|
||||
$table->timestamps();
|
||||
|
||||
$table->unique(['board_id', 'status_id']);
|
||||
$table->index(['board_id', 'sort_order']);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('helpdesk_kanban_board_statuses');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user