refactor: rename asset_network to asset_remote
- DB 테이블명 변경 마이그레이션 스크립트 추가 (migrate_v5_rename_remote.js) - Backend (server.js): 쿼리 및 매핑 로직을 asset_remote 및 remotes 속성으로 업데이트 - Frontend (HWModal.ts): 폼 필드와 데이터 바인딩을 remotes로 일괄 수정 - 유틸리티 스크립트의 레퍼런스 일괄 업데이트
This commit is contained in:
73
migrate_v4_network.js
Normal file
73
migrate_v4_network.js
Normal file
@@ -0,0 +1,73 @@
|
||||
import mysql from 'mysql2/promise';
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const pool = mysql.createPool({
|
||||
host: process.env.DB_HOST,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASS,
|
||||
database: process.env.DB_NAME,
|
||||
port: parseInt(process.env.DB_PORT || '3306'),
|
||||
});
|
||||
|
||||
async function migrate() {
|
||||
const conn = await pool.getConnection();
|
||||
try {
|
||||
console.log('1. Creating asset_remote_v4 table...');
|
||||
await conn.query(`
|
||||
CREATE TABLE IF NOT EXISTS asset_remote_v4 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
asset_id VARCHAR(50) NOT NULL,
|
||||
net_type VARCHAR(20) NOT NULL, /* 'IP' or 'REMOTE' */
|
||||
net_name VARCHAR(100), /* e.g., '기본망', 'AnyDesk' */
|
||||
net_value1 VARCHAR(100), /* IP or ID */
|
||||
net_value2 VARCHAR(100), /* MAC or PW */
|
||||
is_active TINYINT(1) DEFAULT 1,
|
||||
deactivated_at DATETIME NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (asset_id) REFERENCES asset_core(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
`);
|
||||
|
||||
console.log('2. Migrating data from asset_remote...');
|
||||
const [oldRows] = await conn.query('SELECT * FROM asset_remote WHERE is_active = 1');
|
||||
|
||||
let ipCount = 0;
|
||||
let remoteCount = 0;
|
||||
|
||||
for (const row of oldRows) {
|
||||
// Migrating IP/MAC
|
||||
if (row.ip_address || row.mac_address) {
|
||||
await conn.query(
|
||||
'INSERT INTO asset_remote_v4 (asset_id, net_type, net_name, net_value1, net_value2, created_at) VALUES (?, ?, ?, ?, ?, ?)',
|
||||
[row.asset_id, 'IP', '기본망', row.ip_address, row.mac_address, row.created_at]
|
||||
);
|
||||
ipCount++;
|
||||
}
|
||||
// Migrating Remote
|
||||
if (row.remote_tool || row.remote_id || row.remote_pw) {
|
||||
await conn.query(
|
||||
'INSERT INTO asset_remote_v4 (asset_id, net_type, net_name, net_value1, net_value2, created_at) VALUES (?, ?, ?, ?, ?, ?)',
|
||||
[row.asset_id, 'REMOTE', row.remote_tool, row.remote_id, row.remote_pw, row.created_at]
|
||||
);
|
||||
remoteCount++;
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Migrated ${ipCount} IP records and ${remoteCount} Remote records.`);
|
||||
|
||||
console.log('3. Renaming tables...');
|
||||
await conn.query('DROP TABLE IF EXISTS asset_remote_legacy');
|
||||
await conn.query('RENAME TABLE asset_remote TO asset_remote_legacy, asset_remote_v4 TO asset_remote;');
|
||||
|
||||
console.log('✅ Migration V4 (Remote) Complete.');
|
||||
} catch (e) {
|
||||
console.error('Migration failed:', e);
|
||||
} finally {
|
||||
conn.release();
|
||||
pool.end();
|
||||
}
|
||||
}
|
||||
|
||||
migrate();
|
||||
Reference in New Issue
Block a user