ERP-node/backend-node/create-common-code-tables.js

75 lines
2.5 KiB
JavaScript

const { PrismaClient } = require("@prisma/client");
const prisma = new PrismaClient();
async function createCommonCodeTables() {
try {
console.log("=== 공통코드 테이블 생성 시작 ===");
// 1. code_category 테이블 생성
await prisma.$executeRaw`
CREATE TABLE IF NOT EXISTS code_category (
category_code VARCHAR(50) PRIMARY KEY,
category_name VARCHAR(100) NOT NULL,
category_name_eng VARCHAR(100),
description TEXT,
sort_order INTEGER DEFAULT 0,
is_active CHAR(1) DEFAULT 'Y',
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(50),
updated_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_by VARCHAR(50)
)
`;
console.log("✅ code_category 테이블 생성 완료");
// 2. code_info 테이블 생성
await prisma.$executeRaw`
CREATE TABLE IF NOT EXISTS code_info (
code_category VARCHAR(50) NOT NULL,
code_value VARCHAR(50) NOT NULL,
code_name VARCHAR(100) NOT NULL,
code_name_eng VARCHAR(100),
description TEXT,
sort_order INTEGER DEFAULT 0,
is_active CHAR(1) DEFAULT 'Y',
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(50),
updated_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_by VARCHAR(50),
PRIMARY KEY (code_category, code_value),
CONSTRAINT fk_code_info_category
FOREIGN KEY (code_category) REFERENCES code_category(category_code)
ON DELETE CASCADE
ON UPDATE CASCADE
)
`;
console.log("✅ code_info 테이블 생성 완료");
// 3. 인덱스 생성
await prisma.$executeRaw`
CREATE INDEX IF NOT EXISTS idx_code_category_active ON code_category(is_active)
`;
await prisma.$executeRaw`
CREATE INDEX IF NOT EXISTS idx_code_category_sort ON code_category(sort_order)
`;
await prisma.$executeRaw`
CREATE INDEX IF NOT EXISTS idx_code_info_category ON code_info(code_category)
`;
await prisma.$executeRaw`
CREATE INDEX IF NOT EXISTS idx_code_info_active ON code_info(is_active)
`;
await prisma.$executeRaw`
CREATE INDEX IF NOT EXISTS idx_code_info_sort ON code_info(code_category, sort_order)
`;
console.log("✅ 인덱스 생성 완료");
console.log("🎉 공통코드 테이블 생성 완료!");
} catch (error) {
console.error("❌ 오류 발생:", error);
} finally {
await prisma.$disconnect();
}
}
createCommonCodeTables();