Procházet zdrojové kódy

全顧客マイグレーション機能 追加

develop
sosuke.iwabuchi před 1 rokem
rodič
revize
829fc92648
4 změnil soubory, kde provedl 105 přidání a 12 odebrání
  1. +1
    -0
      app/Codes/QueueName.php
  2. +5
    -11
      app/Console/Commands/Migration/全顧客マイグレーション.php
  3. +97
    -0
      app/Console/Commands/Migration/顧客マイグレーション.php
  4. +2
    -1
      config/queue.php

+ 1
- 0
app/Codes/QueueName.php Zobrazit soubor

@@ -6,4 +6,5 @@ enum QueueName: string
{
case EMAIL = 'email';
case JOB = 'job';
case MIGRATE = 'migrate';
}

+ 5
- 11
app/Console/Commands/Migration/全顧客マイグレーション.php Zobrazit soubor

@@ -3,12 +3,12 @@
namespace App\Console\Commands\Migration;

use App\Codes\EnvironmentName;
use App\Codes\QueueName;
use App\Console\Commands\BaseCommand;
use App\Models\Htpms\MstCustomer;
use App\Models\HtpmsCustomer\Existing\Parking;
use App\Models\HtpmsCustomer\HtpmsCustomerConnectionSwitch;
use Exception;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;

class 全顧客マイグレーション extends BaseCommand
@@ -83,7 +83,7 @@ class 全顧客マイグレーション extends BaseCommand


// ## 暫定的に対象を絞り中 テスト中
if (!in_array($customer->id, [1, 520], true)) {
if (!in_array($customer->id, [1, 131, 520], true)) {
return;
}

@@ -91,15 +91,9 @@ class 全顧客マイグレーション extends BaseCommand
$this->outputWarn(sprintf("存在しないスキーマのためスキップ htpms_%d (%s:%s)", $customer->id, $customer->customer_name, $customer->customer_id));
return;
}

HtpmsCustomerConnectionSwitch::switch($customer->id);

try {


$this->outputInfo(sprintf("start htpms_%d migration (%s:%s) ", $customer->id, $customer->customer_name, $customer->customer_id));
$this->call("migrate", ["--force" => true]);
$this->outputInfo(sprintf("end htpms_%d migration (%s:%s)", $customer->id, $customer->customer_name, $customer->customer_id));
Artisan::queue("migrate:customer", ["customerId" => $customer->id])
->onQueue(QueueName::MIGRATE->value);
} catch (Exception $e) {
print_r(DB::getConfig());
throw $e;


+ 97
- 0
app/Console/Commands/Migration/顧客マイグレーション.php Zobrazit soubor

@@ -0,0 +1,97 @@
<?php

namespace App\Console\Commands\Migration;

use App\Console\Commands\BaseCommand;
use App\Models\Htpms\MstCustomer;
use App\Models\HtpmsCustomer\HtpmsCustomerConnectionSwitch;
use Exception;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

class 顧客マイグレーション extends BaseCommand
{

const COMMAND = "migrate:customer {customerId}";


/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = self::COMMAND;

/**
* The console command description.
*
* @var string
*/
protected $description = '顧客毎テーブルをマイグレーションする';

static public function getCommand()
{
return self::COMMAND;
}


/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
$this->outputInfoForBase = false;
parent::__construct();
}

/**
* Execute the console command.
*
* @return int
*/
public function service(): int
{
$customerId = $this->argument("customerId");
$customer = MstCustomer::query()
->whereId($customerId)
->firstOrFail();

HtpmsCustomerConnectionSwitch::switch($customerId);

$this->printMigrationStatus();

try {
$this->outputInfo(sprintf("start htpms_%d migration (%s:%s) ", $customer->id, $customer->customer_name, $customer->customer_id));
$this->call("migrate", ["--force" => true]);
$this->outputInfo(sprintf("end htpms_%d migration (%s:%s)", $customer->id, $customer->customer_name, $customer->customer_id));
} catch (Exception $e) {
print_r(DB::getConfig());
throw $e;
}

return self::RESULTCODE_SUCCESS;
}

private function printMigrationStatus()
{


$conn = DB::connection("htpms_customer");
$config = $conn->getConfig();
$database = data_get($config, "database", "htpms_XXX");
if (!Schema::connection("htpms_customer")->hasTable("tbl3_migrations")) {
$this->outputInfo(sprintf("初回マイグレーション:%s", $database));
return;
}


$mig = $conn->table("tbl3_migrations")->orderByDesc("id")->first();
if ($mig) {
$this->outputInfo(sprintf("最新:%s:%s", $database, $mig->migration));
} else {
$this->outputInfo(sprintf("最新:%s:なし", $database));
}
}
}

+ 2
- 1
config/queue.php Zobrazit soubor

@@ -37,6 +37,7 @@ return [
'database' => [
'driver' => 'database',
'table' => 'tbl3_jobs',
'connection' => 'htpms',
'queue' => 'default',
'retry_after' => 90,
'after_commit' => false,
@@ -102,7 +103,7 @@ return [

'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'mysql'),
'database' => "htpms",
'table' => 'tbl3_failed_jobs',
],



Načítá se…
Zrušit
Uložit