Add filter duplicated documents migration and set unique on uuid

This commit is contained in:
Jérémy Munsch 2023-09-05 12:59:09 +02:00
parent 3a9d671373
commit dddd3ba356
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC

View file

@ -0,0 +1,54 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\QueryException;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class FilterDuplicatedDocumentsAndSetUnique extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
DB::table('documents')->get()->groupBy('uuid')
->each(
function (Collection $groupedDocuments) {
$remaining = $groupedDocuments->count();
foreach ($groupedDocuments as $document) {
if ($remaining > 1) {
try {
DB::table('documents')->where(
'id',
$document->id
)->delete();
$remaining--;
} catch (QueryException $e) {
continue;
}
}
}
}
);
Schema::table('documents', function (Blueprint $table) {
$table->uuid('uuid')->comment('Document uuid')
->unique()->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}