90 lines
2.3 KiB
PHP
90 lines
2.3 KiB
PHP
<?php
|
|
|
|
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
|
|
{
|
|
Schema::create('mailers',function (Blueprint $table) {
|
|
$table->id();
|
|
$table->string('name')->unqiue();
|
|
$table->integer('priority')->unsigned()->unique();
|
|
});
|
|
|
|
Schema::create('mailer_system',function (Blueprint $table) {
|
|
$table->integer('port')->unsigned();
|
|
$table->dateTime('last_poll')->nullable();
|
|
$table->boolean('active');
|
|
$table->integer('attempts')->unsigned()->nullable();
|
|
|
|
$table->bigInteger('system_id');
|
|
$table->foreign('system_id')->references('id')->on('systems');
|
|
$table->bigInteger('mailer_id');
|
|
$table->foreign('mailer_id')->references('id')->on('mailers');
|
|
|
|
$table->unique(['system_id','mailer_id']);
|
|
$table->unique(['system_id','port']);
|
|
});
|
|
|
|
Schema::table('systems',function (Blueprint $table) {
|
|
$table->dropUnique(['mailer_type','mailer_address','mailer_port']);
|
|
});
|
|
|
|
$binkp = new \App\Models\Mailer;
|
|
$binkp->name = 'BINKP';
|
|
$binkp->priority = 1;
|
|
$binkp->save();
|
|
|
|
$emsi = new \App\Models\Mailer;
|
|
$emsi->name = 'EMSI';
|
|
$emsi->priority = 2;
|
|
$emsi->save();
|
|
|
|
foreach (\App\Models\System::whereNotNull('mailer_address')->cursor() as $o) {
|
|
if ($o->mailer_type & \App\Models\Setup::O_BINKP)
|
|
$type = $binkp;
|
|
elseif ($o->mailer_type & \App\Models\Setup::O_EMSI)
|
|
$type = $emsi;
|
|
else
|
|
$type = NULL;
|
|
|
|
if (! $type)
|
|
abort(500,sprintf('No mailer type [%d] :',$o->mailer_type));
|
|
|
|
$o->mailers()->sync([$type->id=>[
|
|
'port'=>$o->mailer_port,
|
|
'active'=>TRUE,
|
|
]]);
|
|
|
|
$o->address = $o->mailer_address;
|
|
$o->mailer_port = null;
|
|
$o->mailer_type = null;
|
|
$o->mailer_address = null;
|
|
$o->save();
|
|
}
|
|
|
|
Schema::table('systems',function (Blueprint $table) {
|
|
$table->dropColumn(['mailer_type','mailer_address','mailer_port']);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Reverse the migrations.
|
|
*/
|
|
public function down(): void
|
|
{
|
|
abort(500,'Cant go back');
|
|
Schema::dropIfExists('mailer_system');
|
|
Schema::dropIfExists('mailers');
|
|
Schema::table('systems',function (Blueprint $table) {
|
|
$table->unique(['mailer_type','mailer_address','mailer_port']);
|
|
});
|
|
}
|
|
};
|