diff --git a/database/migrations/2024_12_05_212631_migrate_discord_notification_settings_from_teams_table.php b/database/migrations/2024_12_05_212631_migrate_discord_notification_settings_from_teams_table.php new file mode 100644 index 000000000..8a2b79c54 --- /dev/null +++ b/database/migrations/2024_12_05_212631_migrate_discord_notification_settings_from_teams_table.php @@ -0,0 +1,81 @@ +discordNotificationSettings()->updateOrCreate( + ['team_id' => $team->id], + [ + 'discord_enabled' => $team->discord_enabled ?? false, + 'discord_webhook_url' => $team->discord_webhook_url, + + 'deployment_success_discord_notification' => $team->discord_notifications_deployments ?? false, + 'deployment_failure_discord_notification' => $team->discord_notifications_deployments ?? true, + 'backup_success_discord_notification' => $team->discord_notifications_database_backups ?? false, + 'backup_failure_discord_notification' => $team->discord_notifications_database_backups ?? true, + 'scheduled_task_success_discord_notification' => $team->discord_notifications_scheduled_tasks ?? false, + 'scheduled_task_failure_discord_notification' => $team->discord_notifications_scheduled_tasks ?? true, + 'status_change_discord_notification' => $team->discord_notifications_status_changes ?? false, + 'server_disk_usage_discord_notification' => $team->discord_notifications_server_disk_usage ?? true, + ] + ); + } + + Schema::table('teams', function (Blueprint $table) { + $table->dropColumn([ + 'discord_enabled', + 'discord_webhook_url', + 'discord_notifications_test', + 'discord_notifications_deployments', + 'discord_notifications_status_changes', + 'discord_notifications_database_backups', + 'discord_notifications_scheduled_tasks', + 'discord_notifications_server_disk_usage', + ]); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('teams', function (Blueprint $table) { + $table->boolean('discord_enabled')->default(false); + $table->string('discord_webhook_url')->nullable(); + $table->boolean('discord_notifications_test')->default(true); + $table->boolean('discord_notifications_deployments')->default(true); + $table->boolean('discord_notifications_status_changes')->default(true); + $table->boolean('discord_notifications_database_backups')->default(true); + $table->boolean('discord_notifications_scheduled_tasks')->default(true); + $table->boolean('discord_notifications_server_disk_usage')->default(true); + }); + + $teams = Team::with('discordNotificationSettings')->get(); + foreach ($teams as $team) { + if ($settings = $team->discordNotificationSettings) { + $team->update([ + 'discord_enabled' => $settings->discord_enabled, + 'discord_webhook_url' => $settings->discord_webhook_url, + 'discord_notifications_test' => true, + 'discord_notifications_deployments' => $settings->deployment_success_discord_notification, + 'discord_notifications_status_changes' => $settings->status_change_discord_notification, + 'discord_notifications_database_backups' => $settings->backup_success_discord_notification, + 'discord_notifications_scheduled_tasks' => $settings->scheduled_task_success_discord_notification, + 'discord_notifications_server_disk_usage' => $settings->server_disk_usage_discord_notification, + ]); + } + } + } +};