113 lines
3.5 KiB
TypeScript
113 lines
3.5 KiB
TypeScript
import { PostgreSQLService } from "./PostgreSQLService";
|
||
import fs from "fs";
|
||
import path from "path";
|
||
|
||
/**
|
||
* 데이터베이스 마이그레이션 실행
|
||
* dashboard_elements 테이블에 custom_title, show_header 컬럼 추가
|
||
*/
|
||
export async function runDashboardMigration() {
|
||
try {
|
||
console.log("🔄 대시보드 마이그레이션 시작...");
|
||
|
||
// custom_title 컬럼 추가
|
||
await PostgreSQLService.query(`
|
||
ALTER TABLE dashboard_elements
|
||
ADD COLUMN IF NOT EXISTS custom_title VARCHAR(255)
|
||
`);
|
||
console.log("✅ custom_title 컬럼 추가 완료");
|
||
|
||
// show_header 컬럼 추가
|
||
await PostgreSQLService.query(`
|
||
ALTER TABLE dashboard_elements
|
||
ADD COLUMN IF NOT EXISTS show_header BOOLEAN DEFAULT true
|
||
`);
|
||
console.log("✅ show_header 컬럼 추가 완료");
|
||
|
||
// 기존 데이터 업데이트
|
||
await PostgreSQLService.query(`
|
||
UPDATE dashboard_elements
|
||
SET show_header = true
|
||
WHERE show_header IS NULL
|
||
`);
|
||
console.log("✅ 기존 데이터 업데이트 완료");
|
||
|
||
console.log("✅ 대시보드 마이그레이션 완료!");
|
||
} catch (error) {
|
||
console.error("❌ 대시보드 마이그레이션 실패:", error);
|
||
// 이미 컬럼이 있는 경우는 무시
|
||
if (error instanceof Error && error.message.includes("already exists")) {
|
||
console.log("ℹ️ 컬럼이 이미 존재합니다.");
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 테이블 이력 보기 버튼 액션 마이그레이션
|
||
*/
|
||
export async function runTableHistoryActionMigration() {
|
||
try {
|
||
console.log("🔄 테이블 이력 보기 액션 마이그레이션 시작...");
|
||
|
||
// SQL 파일 읽기
|
||
const sqlFilePath = path.join(
|
||
__dirname,
|
||
"../../db/migrations/024_add_table_history_view_action.sql"
|
||
);
|
||
|
||
if (!fs.existsSync(sqlFilePath)) {
|
||
console.log("⚠️ 마이그레이션 파일이 없습니다:", sqlFilePath);
|
||
return;
|
||
}
|
||
|
||
const sqlContent = fs.readFileSync(sqlFilePath, "utf8");
|
||
|
||
// SQL 실행
|
||
await PostgreSQLService.query(sqlContent);
|
||
|
||
console.log("✅ 테이블 이력 보기 액션 마이그레이션 완료!");
|
||
} catch (error) {
|
||
console.error("❌ 테이블 이력 보기 액션 마이그레이션 실패:", error);
|
||
// 이미 액션이 있는 경우는 무시
|
||
if (
|
||
error instanceof Error &&
|
||
error.message.includes("duplicate key value")
|
||
) {
|
||
console.log("ℹ️ 액션이 이미 존재합니다.");
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* DTG Management 테이블 이력 시스템 마이그레이션
|
||
*/
|
||
export async function runDtgManagementLogMigration() {
|
||
try {
|
||
console.log("🔄 DTG Management 이력 테이블 마이그레이션 시작...");
|
||
|
||
// SQL 파일 읽기
|
||
const sqlFilePath = path.join(
|
||
__dirname,
|
||
"../../db/migrations/025_create_dtg_management_log.sql"
|
||
);
|
||
|
||
if (!fs.existsSync(sqlFilePath)) {
|
||
console.log("⚠️ 마이그레이션 파일이 없습니다:", sqlFilePath);
|
||
return;
|
||
}
|
||
|
||
const sqlContent = fs.readFileSync(sqlFilePath, "utf8");
|
||
|
||
// SQL 실행
|
||
await PostgreSQLService.query(sqlContent);
|
||
|
||
console.log("✅ DTG Management 이력 테이블 마이그레이션 완료!");
|
||
} catch (error) {
|
||
console.error("❌ DTG Management 이력 테이블 마이그레이션 실패:", error);
|
||
// 이미 테이블이 있는 경우는 무시
|
||
if (error instanceof Error && error.message.includes("already exists")) {
|
||
console.log("ℹ️ 이력 테이블이 이미 존재합니다.");
|
||
}
|
||
}
|
||
}
|