feat: migrate old telegram notification settings from the teams table
This commit is contained in:
@@ -0,0 +1,106 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Team;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
$teams = Team::all();
|
||||||
|
|
||||||
|
foreach ($teams as $team) {
|
||||||
|
|
||||||
|
$team->telegramNotificationSettings()->updateOrCreate(
|
||||||
|
['team_id' => $team->id],
|
||||||
|
[
|
||||||
|
'telegram_enabled' => $team->telegram_enabled ?? false,
|
||||||
|
'telegram_token' => $team->telegram_token,
|
||||||
|
'telegram_chat_id' => $team->telegram_chat_id,
|
||||||
|
|
||||||
|
'deployment_success_telegram_notification' => $team->telegram_notifications_deployments ?? false,
|
||||||
|
'deployment_failure_telegram_notification' => $team->telegram_notifications_deployments ?? true,
|
||||||
|
'backup_success_telegram_notification' => $team->telegram_notifications_database_backups ?? false,
|
||||||
|
'backup_failure_telegram_notification' => $team->telegram_notifications_database_backups ?? true,
|
||||||
|
'scheduled_task_success_telegram_notification' => $team->telegram_notifications_scheduled_tasks ?? false,
|
||||||
|
'scheduled_task_failure_telegram_notification' => $team->telegram_notifications_scheduled_tasks ?? true,
|
||||||
|
'status_change_telegram_notification' => $team->telegram_notifications_status_changes ?? false,
|
||||||
|
'server_disk_usage_telegram_notification' => $team->telegram_notifications_server_disk_usage ?? true,
|
||||||
|
|
||||||
|
'telegram_notifications_deployment_success_thread_id' => $team->telegram_notifications_deployments_message_thread_id,
|
||||||
|
'telegram_notifications_deployment_failure_thread_id' => $team->telegram_notifications_deployments_message_thread_id,
|
||||||
|
'telegram_notifications_backup_success_thread_id' => $team->telegram_notifications_database_backups_message_thread_id,
|
||||||
|
'telegram_notifications_backup_failure_thread_id' => $team->telegram_notifications_database_backups_message_thread_id,
|
||||||
|
'telegram_notifications_scheduled_task_success_thread_id' => $team->telegram_notifications_scheduled_tasks_thread_id,
|
||||||
|
'telegram_notifications_scheduled_task_failure_thread_id' => $team->telegram_notifications_scheduled_tasks_thread_id,
|
||||||
|
'telegram_notifications_status_change_thread_id' => $team->telegram_notifications_status_changes_message_thread_id,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drop the old columns
|
||||||
|
Schema::table('teams', function (Blueprint $table) {
|
||||||
|
$table->dropColumn([
|
||||||
|
'telegram_enabled',
|
||||||
|
'telegram_token',
|
||||||
|
'telegram_chat_id',
|
||||||
|
'telegram_notifications_test',
|
||||||
|
'telegram_notifications_deployments',
|
||||||
|
'telegram_notifications_status_changes',
|
||||||
|
'telegram_notifications_database_backups',
|
||||||
|
'telegram_notifications_scheduled_tasks',
|
||||||
|
'telegram_notifications_server_disk_usage',
|
||||||
|
'telegram_notifications_test_message_thread_id',
|
||||||
|
'telegram_notifications_deployments_message_thread_id',
|
||||||
|
'telegram_notifications_status_changes_message_thread_id',
|
||||||
|
'telegram_notifications_database_backups_message_thread_id',
|
||||||
|
'telegram_notifications_scheduled_tasks_thread_id',
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
// Add back the old columns
|
||||||
|
Schema::table('teams', function (Blueprint $table) {
|
||||||
|
$table->boolean('telegram_enabled')->default(false);
|
||||||
|
$table->text('telegram_token')->nullable();
|
||||||
|
$table->text('telegram_chat_id')->nullable();
|
||||||
|
$table->boolean('telegram_notifications_test')->default(true);
|
||||||
|
$table->boolean('telegram_notifications_deployments')->default(true);
|
||||||
|
$table->boolean('telegram_notifications_status_changes')->default(true);
|
||||||
|
$table->boolean('telegram_notifications_database_backups')->default(true);
|
||||||
|
$table->boolean('telegram_notifications_scheduled_tasks')->default(true);
|
||||||
|
$table->boolean('telegram_notifications_server_disk_usage')->default(true);
|
||||||
|
$table->text('telegram_notifications_test_message_thread_id')->nullable();
|
||||||
|
$table->text('telegram_notifications_deployments_message_thread_id')->nullable();
|
||||||
|
$table->text('telegram_notifications_status_changes_message_thread_id')->nullable();
|
||||||
|
$table->text('telegram_notifications_database_backups_message_thread_id')->nullable();
|
||||||
|
$table->text('telegram_notifications_scheduled_tasks_thread_id')->nullable();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Migrate data back from the new table to the old columns
|
||||||
|
$teams = Team::with('telegramNotificationSettings')->get();
|
||||||
|
foreach ($teams as $team) {
|
||||||
|
if ($settings = $team->telegramNotificationSettings) {
|
||||||
|
$team->update([
|
||||||
|
'telegram_enabled' => $settings->telegram_enabled,
|
||||||
|
'telegram_token' => $settings->telegram_token,
|
||||||
|
'telegram_chat_id' => $settings->telegram_chat_id,
|
||||||
|
'telegram_notifications_test' => true,
|
||||||
|
'telegram_notifications_deployments' => $settings->deployment_success_telegram_notification,
|
||||||
|
'telegram_notifications_status_changes' => $settings->status_change_telegram_notification,
|
||||||
|
'telegram_notifications_database_backups' => $settings->backup_success_telegram_notification,
|
||||||
|
'telegram_notifications_scheduled_tasks' => $settings->scheduled_task_success_telegram_notification,
|
||||||
|
'telegram_notifications_server_disk_usage' => $settings->server_disk_usage_telegram_notification,
|
||||||
|
'telegram_notifications_deployments_message_thread_id' => $settings->telegram_notifications_deployment_success_thread_id,
|
||||||
|
'telegram_notifications_status_changes_message_thread_id' => $settings->telegram_notifications_status_change_thread_id,
|
||||||
|
'telegram_notifications_database_backups_message_thread_id' => $settings->telegram_notifications_backup_success_thread_id,
|
||||||
|
'telegram_notifications_scheduled_tasks_thread_id' => $settings->telegram_notifications_scheduled_task_success_thread_id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user