refactor: 레거시 product_id/material_id 컬럼 삭제
- orders.product_id 삭제 - order_items.product_id 삭제 - quotes.product_id 삭제 - material_receipts.material_id 삭제 - lots.material_id 삭제 items 테이블 통합 완료로 더 이상 불필요한 컬럼 정리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
/**
|
||||
* Phase 5.5: 레거시 product_id/material_id 컬럼 삭제
|
||||
*
|
||||
* 전제조건:
|
||||
* - items 테이블로 데이터 마이그레이션 완료
|
||||
* - item_id 컬럼에 데이터 매핑 완료
|
||||
* - products/materials 테이블 삭제됨
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
// 1. orders.product_id 삭제
|
||||
if (Schema::hasTable('orders') && Schema::hasColumn('orders', 'product_id')) {
|
||||
Schema::table('orders', function (Blueprint $table) {
|
||||
$table->dropColumn('product_id');
|
||||
});
|
||||
}
|
||||
|
||||
// 2. order_items.product_id 삭제
|
||||
if (Schema::hasTable('order_items') && Schema::hasColumn('order_items', 'product_id')) {
|
||||
Schema::table('order_items', function (Blueprint $table) {
|
||||
$table->dropColumn('product_id');
|
||||
});
|
||||
}
|
||||
|
||||
// 3. quotes.product_id 삭제
|
||||
if (Schema::hasTable('quotes') && Schema::hasColumn('quotes', 'product_id')) {
|
||||
Schema::table('quotes', function (Blueprint $table) {
|
||||
$table->dropColumn('product_id');
|
||||
});
|
||||
}
|
||||
|
||||
// 4. material_receipts.material_id 삭제
|
||||
if (Schema::hasTable('material_receipts') && Schema::hasColumn('material_receipts', 'material_id')) {
|
||||
Schema::table('material_receipts', function (Blueprint $table) {
|
||||
$table->dropColumn('material_id');
|
||||
});
|
||||
}
|
||||
|
||||
// 5. lots.material_id 삭제
|
||||
if (Schema::hasTable('lots') && Schema::hasColumn('lots', 'material_id')) {
|
||||
Schema::table('lots', function (Blueprint $table) {
|
||||
$table->dropColumn('material_id');
|
||||
});
|
||||
}
|
||||
|
||||
DB::statement("SELECT 'Dropped legacy product_id/material_id columns' AS result");
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* 주의: 컬럼 복원만 수행, 데이터는 item_id_mappings로 복원 필요
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
// 1. orders.product_id 복원
|
||||
if (Schema::hasTable('orders') && ! Schema::hasColumn('orders', 'product_id')) {
|
||||
Schema::table('orders', function (Blueprint $table) {
|
||||
$table->unsignedBigInteger('product_id')->nullable()->after('category_code')
|
||||
->comment('(deprecated) 기존 products 참조');
|
||||
});
|
||||
}
|
||||
|
||||
// 2. order_items.product_id 복원
|
||||
if (Schema::hasTable('order_items') && ! Schema::hasColumn('order_items', 'product_id')) {
|
||||
Schema::table('order_items', function (Blueprint $table) {
|
||||
$table->unsignedBigInteger('product_id')->nullable()->after('serial_no')
|
||||
->comment('(deprecated) 기존 products 참조');
|
||||
});
|
||||
}
|
||||
|
||||
// 3. quotes.product_id 복원
|
||||
if (Schema::hasTable('quotes') && ! Schema::hasColumn('quotes', 'product_id')) {
|
||||
Schema::table('quotes', function (Blueprint $table) {
|
||||
$table->unsignedBigInteger('product_id')->nullable()->after('product_category')
|
||||
->comment('(deprecated) 기존 products 참조');
|
||||
});
|
||||
}
|
||||
|
||||
// 4. material_receipts.material_id 복원
|
||||
if (Schema::hasTable('material_receipts') && ! Schema::hasColumn('material_receipts', 'material_id')) {
|
||||
Schema::table('material_receipts', function (Blueprint $table) {
|
||||
$table->unsignedBigInteger('material_id')->nullable()->first()
|
||||
->comment('(deprecated) 기존 materials 참조');
|
||||
});
|
||||
}
|
||||
|
||||
// 5. lots.material_id 복원
|
||||
if (Schema::hasTable('lots') && ! Schema::hasColumn('lots', 'material_id')) {
|
||||
Schema::table('lots', function (Blueprint $table) {
|
||||
$table->unsignedBigInteger('material_id')->nullable()->after('id')
|
||||
->comment('(deprecated) 기존 materials 참조');
|
||||
});
|
||||
}
|
||||
|
||||
// 데이터 복원 안내
|
||||
DB::statement("SELECT 'Columns restored. Use item_id_mappings to restore data if needed.' AS warning");
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user