87 lines
3.2 KiB
JavaScript
87 lines
3.2 KiB
JavaScript
/**
|
|
* 마이그레이션 검증 스크립트
|
|
*/
|
|
|
|
const { Pool } = require('pg');
|
|
|
|
const databaseUrl = process.env.DATABASE_URL || 'postgresql://postgres:ph0909!!@39.117.244.52:11132/plm';
|
|
|
|
const pool = new Pool({
|
|
connectionString: databaseUrl,
|
|
});
|
|
|
|
async function verifyMigration() {
|
|
const client = await pool.connect();
|
|
|
|
try {
|
|
console.log('🔍 마이그레이션 결과 검증 중...\n');
|
|
|
|
// 전체 요소 수
|
|
const total = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements
|
|
`);
|
|
|
|
// 새로운 subtype별 개수
|
|
const mapV2 = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'map-summary-v2'
|
|
`);
|
|
|
|
const chart = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'chart'
|
|
`);
|
|
|
|
const listV2 = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'list-v2'
|
|
`);
|
|
|
|
const metricV2 = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'custom-metric-v2'
|
|
`);
|
|
|
|
const alertV2 = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype = 'risk-alert-v2'
|
|
`);
|
|
|
|
// 테스트 subtype 남아있는지 확인
|
|
const remaining = await client.query(`
|
|
SELECT COUNT(*) as count FROM dashboard_elements WHERE element_subtype LIKE '%-test%'
|
|
`);
|
|
|
|
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
console.log('📊 마이그레이션 결과 요약');
|
|
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
console.log(`전체 요소 수: ${total.rows[0].count}`);
|
|
console.log(`map-summary-v2: ${mapV2.rows[0].count}`);
|
|
console.log(`chart: ${chart.rows[0].count}`);
|
|
console.log(`list-v2: ${listV2.rows[0].count}`);
|
|
console.log(`custom-metric-v2: ${metricV2.rows[0].count}`);
|
|
console.log(`risk-alert-v2: ${alertV2.rows[0].count}`);
|
|
console.log('');
|
|
|
|
if (parseInt(remaining.rows[0].count) > 0) {
|
|
console.log(`⚠️ 테스트 subtype이 ${remaining.rows[0].count}개 남아있습니다!`);
|
|
} else {
|
|
console.log('✅ 모든 테스트 subtype이 정상적으로 변경되었습니다!');
|
|
}
|
|
|
|
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
console.log('');
|
|
console.log('🎉 마이그레이션이 성공적으로 완료되었습니다!');
|
|
console.log('');
|
|
console.log('다음 단계:');
|
|
console.log('1. 프론트엔드 애플리케이션을 새로고침하세요');
|
|
console.log('2. 대시보드를 열어 위젯이 정상적으로 작동하는지 확인하세요');
|
|
console.log('3. 문제가 발생하면 백업에서 복원하세요');
|
|
console.log('');
|
|
|
|
} catch (error) {
|
|
console.error('❌ 오류 발생:', error.message);
|
|
} finally {
|
|
client.release();
|
|
await pool.end();
|
|
}
|
|
}
|
|
|
|
verifyMigration();
|
|
|