ソースを参照

マイグレーションの修正

develop
sosuke.iwabuchi 1年前
コミット
f6e08b783e
3個のファイルの変更107行の追加6行の削除
  1. +92
    -0
      app/Console/Commands/Migration/テンプレートマイグレーション.php
  2. +0
    -6
      app/Console/Commands/Migration/全顧客マイグレーション.php
  3. +15
    -0
      app/Models/HtpmsCustomer/HtpmsCustomerConnectionSwitch.php

+ 92
- 0
app/Console/Commands/Migration/テンプレートマイグレーション.php ファイルの表示

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

namespace App\Console\Commands\Migration;

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

class テンプレートマイグレーション extends BaseCommand
{

const COMMAND = "migrate:template";


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

/**
* The console command description.
*
* @var string
*/
protected $description = 'テンプレートDBをマイグレーションする';

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
{

HtpmsCustomerConnectionSwitch::switchToTemplate();

$this->printMigrationStatus();

try {
$this->outputInfo("start htpms_template migration");
$this->call("migrate", ["--force" => true]); // 対話OFF
$this->outputInfo("end htpms_template migration");
} 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));
}
}
}

+ 0
- 6
app/Console/Commands/Migration/全顧客マイグレーション.php ファイルの表示

@@ -81,12 +81,6 @@ class 全顧客マイグレーション extends BaseCommand
}
}


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

if (!HtpmsCustomerConnectionSwitch::isEnable($customer->id)) {
$this->outputWarn(sprintf("存在しないスキーマのためスキップ htpms_%d (%s:%s)", $customer->id, $customer->customer_name, $customer->customer_id));
return;


+ 15
- 0
app/Models/HtpmsCustomer/HtpmsCustomerConnectionSwitch.php ファイルの表示

@@ -28,6 +28,21 @@ class HtpmsCustomerConnectionSwitch
}
}

public static function switchToTemplate(): void
{
$connectionsRoot = "database.connections";
$connectionHtmsCustomer = "htpms_customer";

$databaseNameKey = "{$connectionsRoot}.{$connectionHtmsCustomer}.database";
$currentDatabaseName = config($databaseNameKey);

$afterDatabaseName = "htpms_template";

if ($currentDatabaseName !== $afterDatabaseName) {
Config::set($databaseNameKey, $afterDatabaseName);
}
}

public static function isEnable(int $customerId): bool
{
$dsn = sprintf(


読み込み中…
キャンセル
保存