106 lines
3.0 KiB
JavaScript
106 lines
3.0 KiB
JavaScript
|
|
const { PrismaClient } = require("@prisma/client");
|
|||
|
|
|
|||
|
|
const prisma = new PrismaClient();
|
|||
|
|
|
|||
|
|
async function addMissingColumns() {
|
|||
|
|
try {
|
|||
|
|
console.log("🔄 누락된 컬럼들을 screen_layouts 테이블에 추가 중...");
|
|||
|
|
|
|||
|
|
// layout_type 컬럼 추가
|
|||
|
|
try {
|
|||
|
|
await prisma.$executeRaw`
|
|||
|
|
ALTER TABLE screen_layouts
|
|||
|
|
ADD COLUMN IF NOT EXISTS layout_type VARCHAR(50);
|
|||
|
|
`;
|
|||
|
|
console.log("✅ layout_type 컬럼 추가 완료");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(
|
|||
|
|
"ℹ️ layout_type 컬럼이 이미 존재하거나 추가 중 오류:",
|
|||
|
|
error.message
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// layout_config 컬럼 추가
|
|||
|
|
try {
|
|||
|
|
await prisma.$executeRaw`
|
|||
|
|
ALTER TABLE screen_layouts
|
|||
|
|
ADD COLUMN IF NOT EXISTS layout_config JSONB;
|
|||
|
|
`;
|
|||
|
|
console.log("✅ layout_config 컬럼 추가 완료");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(
|
|||
|
|
"ℹ️ layout_config 컬럼이 이미 존재하거나 추가 중 오류:",
|
|||
|
|
error.message
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// zones_config 컬럼 추가
|
|||
|
|
try {
|
|||
|
|
await prisma.$executeRaw`
|
|||
|
|
ALTER TABLE screen_layouts
|
|||
|
|
ADD COLUMN IF NOT EXISTS zones_config JSONB;
|
|||
|
|
`;
|
|||
|
|
console.log("✅ zones_config 컬럼 추가 완료");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(
|
|||
|
|
"ℹ️ zones_config 컬럼이 이미 존재하거나 추가 중 오류:",
|
|||
|
|
error.message
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// zone_id 컬럼 추가
|
|||
|
|
try {
|
|||
|
|
await prisma.$executeRaw`
|
|||
|
|
ALTER TABLE screen_layouts
|
|||
|
|
ADD COLUMN IF NOT EXISTS zone_id VARCHAR(100);
|
|||
|
|
`;
|
|||
|
|
console.log("✅ zone_id 컬럼 추가 완료");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log(
|
|||
|
|
"ℹ️ zone_id 컬럼이 이미 존재하거나 추가 중 오류:",
|
|||
|
|
error.message
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 인덱스 생성 (성능 향상)
|
|||
|
|
try {
|
|||
|
|
await prisma.$executeRaw`
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_screen_layouts_layout_type
|
|||
|
|
ON screen_layouts(layout_type);
|
|||
|
|
`;
|
|||
|
|
console.log("✅ layout_type 인덱스 생성 완료");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log("ℹ️ layout_type 인덱스 생성 중 오류:", error.message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
await prisma.$executeRaw`
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_screen_layouts_zone_id
|
|||
|
|
ON screen_layouts(zone_id);
|
|||
|
|
`;
|
|||
|
|
console.log("✅ zone_id 인덱스 생성 완료");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.log("ℹ️ zone_id 인덱스 생성 중 오류:", error.message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 최종 테이블 구조 확인
|
|||
|
|
const columns = await prisma.$queryRaw`
|
|||
|
|
SELECT column_name, data_type, is_nullable, column_default
|
|||
|
|
FROM information_schema.columns
|
|||
|
|
WHERE table_name = 'screen_layouts'
|
|||
|
|
ORDER BY ordinal_position
|
|||
|
|
`;
|
|||
|
|
|
|||
|
|
console.log("\n📋 screen_layouts 테이블 최종 구조:");
|
|||
|
|
console.table(columns);
|
|||
|
|
|
|||
|
|
console.log("\n🎉 모든 누락된 컬럼 추가 작업이 완료되었습니다!");
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error("❌ 컬럼 추가 중 오류 발생:", error);
|
|||
|
|
} finally {
|
|||
|
|
await prisma.$disconnect();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
addMissingColumns();
|