75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
const { PrismaClient } = require("@prisma/client");
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function createComponentTable() {
|
|
try {
|
|
console.log("🔧 component_standards 테이블 생성 중...");
|
|
|
|
// 테이블 생성 SQL
|
|
await prisma.$executeRaw`
|
|
CREATE TABLE IF NOT EXISTS component_standards (
|
|
component_code VARCHAR(50) PRIMARY KEY,
|
|
component_name VARCHAR(100) NOT NULL,
|
|
component_name_eng VARCHAR(100),
|
|
description TEXT,
|
|
category VARCHAR(50) NOT NULL,
|
|
icon_name VARCHAR(50),
|
|
default_size JSON,
|
|
component_config JSON NOT NULL,
|
|
preview_image VARCHAR(255),
|
|
sort_order INTEGER DEFAULT 0,
|
|
is_active CHAR(1) DEFAULT 'Y',
|
|
is_public CHAR(1) DEFAULT 'Y',
|
|
company_code VARCHAR(50) NOT NULL,
|
|
created_date TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP,
|
|
created_by VARCHAR(50),
|
|
updated_date TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP,
|
|
updated_by VARCHAR(50)
|
|
)
|
|
`;
|
|
|
|
console.log("✅ component_standards 테이블 생성 완료");
|
|
|
|
// 인덱스 생성
|
|
await prisma.$executeRaw`
|
|
CREATE INDEX IF NOT EXISTS idx_component_standards_category
|
|
ON component_standards (category)
|
|
`;
|
|
|
|
await prisma.$executeRaw`
|
|
CREATE INDEX IF NOT EXISTS idx_component_standards_company
|
|
ON component_standards (company_code)
|
|
`;
|
|
|
|
console.log("✅ 인덱스 생성 완료");
|
|
|
|
// 테이블 코멘트 추가
|
|
await prisma.$executeRaw`
|
|
COMMENT ON TABLE component_standards IS 'UI 컴포넌트 표준 정보를 저장하는 테이블'
|
|
`;
|
|
|
|
console.log("✅ 테이블 코멘트 추가 완료");
|
|
} catch (error) {
|
|
console.error("❌ 테이블 생성 실패:", error);
|
|
throw error;
|
|
} finally {
|
|
await prisma.$disconnect();
|
|
}
|
|
}
|
|
|
|
// 실행
|
|
if (require.main === module) {
|
|
createComponentTable()
|
|
.then(() => {
|
|
console.log("🎉 테이블 생성 완료!");
|
|
process.exit(0);
|
|
})
|
|
.catch((error) => {
|
|
console.error("💥 테이블 생성 실패:", error);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
module.exports = { createComponentTable };
|