197 lines
5.8 KiB
JavaScript
197 lines
5.8 KiB
JavaScript
|
|
const { PrismaClient } = require("@prisma/client");
|
||
|
|
const prisma = new PrismaClient();
|
||
|
|
|
||
|
|
async function insertCommonCodeData() {
|
||
|
|
try {
|
||
|
|
console.log("=== 공통코드 기본 데이터 삽입 시작 ===");
|
||
|
|
|
||
|
|
// 기존 데이터 삭제 (재실행 시 중복 방지)
|
||
|
|
await prisma.$executeRaw`DELETE FROM code_info WHERE code_category IN ('USER_STATUS', 'USER_TYPE', 'DEPT_TYPE', 'LANGUAGE', 'CURRENCY')`;
|
||
|
|
await prisma.$executeRaw`DELETE FROM code_category WHERE category_code IN ('USER_STATUS', 'USER_TYPE', 'DEPT_TYPE', 'LANGUAGE', 'CURRENCY')`;
|
||
|
|
console.log("✅ 기존 데이터 정리 완료");
|
||
|
|
|
||
|
|
// 1. 카테고리 삽입
|
||
|
|
const categories = [
|
||
|
|
[
|
||
|
|
"USER_STATUS",
|
||
|
|
"사용자 상태",
|
||
|
|
"User Status",
|
||
|
|
"사용자의 활성화 상태를 나타내는 코드",
|
||
|
|
1,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"USER_TYPE",
|
||
|
|
"사용자 타입",
|
||
|
|
"User Type",
|
||
|
|
"사용자의 권한 타입을 구분하는 코드",
|
||
|
|
2,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"DEPT_TYPE",
|
||
|
|
"부서 타입",
|
||
|
|
"Department Type",
|
||
|
|
"부서의 분류를 나타내는 코드",
|
||
|
|
3,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"LANGUAGE",
|
||
|
|
"언어 코드",
|
||
|
|
"Language Code",
|
||
|
|
"시스템에서 지원하는 언어 코드",
|
||
|
|
4,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"CURRENCY",
|
||
|
|
"통화 코드",
|
||
|
|
"Currency Code",
|
||
|
|
"시스템에서 지원하는 통화 코드",
|
||
|
|
5,
|
||
|
|
],
|
||
|
|
];
|
||
|
|
|
||
|
|
for (const [code, name, nameEng, desc, order] of categories) {
|
||
|
|
await prisma.$executeRaw`
|
||
|
|
INSERT INTO code_category (category_code, category_name, category_name_eng, description, sort_order, is_active, created_date, created_by, updated_date, updated_by)
|
||
|
|
VALUES (${code}, ${name}, ${nameEng}, ${desc}, ${order}, 'Y', now(), 'SYSTEM', now(), 'SYSTEM')
|
||
|
|
`;
|
||
|
|
}
|
||
|
|
console.log("✅ 카테고리 데이터 삽입 완료");
|
||
|
|
|
||
|
|
// 2. 코드 정보 삽입
|
||
|
|
const codes = [
|
||
|
|
// 사용자 상태
|
||
|
|
["USER_STATUS", "A", "활성", "Active", "정상적으로 활동 중인 사용자", 1],
|
||
|
|
[
|
||
|
|
"USER_STATUS",
|
||
|
|
"I",
|
||
|
|
"비활성",
|
||
|
|
"Inactive",
|
||
|
|
"일시적으로 비활성화된 사용자",
|
||
|
|
2,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"USER_STATUS",
|
||
|
|
"S",
|
||
|
|
"휴면",
|
||
|
|
"Sleep",
|
||
|
|
"장기간 미접속으로 휴면 상태인 사용자",
|
||
|
|
3,
|
||
|
|
],
|
||
|
|
["USER_STATUS", "D", "삭제", "Deleted", "삭제 처리된 사용자", 4],
|
||
|
|
|
||
|
|
// 사용자 타입
|
||
|
|
[
|
||
|
|
"USER_TYPE",
|
||
|
|
"ADMIN",
|
||
|
|
"관리자",
|
||
|
|
"Administrator",
|
||
|
|
"시스템 전체를 관리할 수 있는 최고 권한",
|
||
|
|
1,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"USER_TYPE",
|
||
|
|
"USER",
|
||
|
|
"일반사용자",
|
||
|
|
"User",
|
||
|
|
"일반적인 업무 기능을 사용할 수 있는 사용자",
|
||
|
|
2,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"USER_TYPE",
|
||
|
|
"GUEST",
|
||
|
|
"게스트",
|
||
|
|
"Guest",
|
||
|
|
"제한적인 기능만 사용할 수 있는 게스트 사용자",
|
||
|
|
3,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"USER_TYPE",
|
||
|
|
"PARTNER",
|
||
|
|
"협력업체",
|
||
|
|
"Partner",
|
||
|
|
"협력업체 직원으로 특정 기능만 사용 가능",
|
||
|
|
4,
|
||
|
|
],
|
||
|
|
|
||
|
|
// 부서 타입
|
||
|
|
[
|
||
|
|
"DEPT_TYPE",
|
||
|
|
"SALES",
|
||
|
|
"영업부",
|
||
|
|
"Sales Department",
|
||
|
|
"영업 관련 업무를 담당하는 부서",
|
||
|
|
1,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"DEPT_TYPE",
|
||
|
|
"DEV",
|
||
|
|
"개발부",
|
||
|
|
"Development Department",
|
||
|
|
"시스템 개발을 담당하는 부서",
|
||
|
|
2,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"DEPT_TYPE",
|
||
|
|
"HR",
|
||
|
|
"인사부",
|
||
|
|
"Human Resources Department",
|
||
|
|
"인사 관리를 담당하는 부서",
|
||
|
|
3,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"DEPT_TYPE",
|
||
|
|
"FINANCE",
|
||
|
|
"재무부",
|
||
|
|
"Finance Department",
|
||
|
|
"재무 관리를 담당하는 부서",
|
||
|
|
4,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
"DEPT_TYPE",
|
||
|
|
"ADMIN",
|
||
|
|
"관리부",
|
||
|
|
"Administration Department",
|
||
|
|
"일반 관리 업무를 담당하는 부서",
|
||
|
|
5,
|
||
|
|
],
|
||
|
|
|
||
|
|
// 언어 코드
|
||
|
|
["LANGUAGE", "KR", "한국어", "Korean", "한국어 언어 설정", 1],
|
||
|
|
["LANGUAGE", "US", "영어", "English", "영어 언어 설정", 2],
|
||
|
|
["LANGUAGE", "CN", "중국어", "Chinese", "중국어 언어 설정", 3],
|
||
|
|
["LANGUAGE", "JP", "일본어", "Japanese", "일본어 언어 설정", 4],
|
||
|
|
|
||
|
|
// 통화 코드
|
||
|
|
["CURRENCY", "KRW", "원", "Korean Won", "대한민국 원화", 1],
|
||
|
|
["CURRENCY", "USD", "달러", "US Dollar", "미국 달러", 2],
|
||
|
|
["CURRENCY", "EUR", "유로", "Euro", "유럽 유로", 3],
|
||
|
|
["CURRENCY", "JPY", "엔", "Japanese Yen", "일본 엔화", 4],
|
||
|
|
["CURRENCY", "CNY", "위안", "Chinese Yuan", "중국 위안화", 5],
|
||
|
|
];
|
||
|
|
|
||
|
|
for (const [category, value, name, nameEng, desc, order] of codes) {
|
||
|
|
await prisma.$executeRaw`
|
||
|
|
INSERT INTO code_info (code_category, code_value, code_name, code_name_eng, description, sort_order, is_active, created_date, created_by, updated_date, updated_by)
|
||
|
|
VALUES (${category}, ${value}, ${name}, ${nameEng}, ${desc}, ${order}, 'Y', now(), 'SYSTEM', now(), 'SYSTEM')
|
||
|
|
`;
|
||
|
|
}
|
||
|
|
console.log("✅ 코드 정보 데이터 삽입 완료");
|
||
|
|
|
||
|
|
// 3. 삽입 결과 확인
|
||
|
|
const categoryCount =
|
||
|
|
await prisma.$queryRaw`SELECT COUNT(*) as count FROM code_category WHERE created_by = 'SYSTEM'`;
|
||
|
|
const codeCount =
|
||
|
|
await prisma.$queryRaw`SELECT COUNT(*) as count FROM code_info WHERE created_by = 'SYSTEM'`;
|
||
|
|
|
||
|
|
console.log(`📊 삽입된 카테고리 수: ${categoryCount[0].count}`);
|
||
|
|
console.log(`📊 삽입된 코드 수: ${codeCount[0].count}`);
|
||
|
|
console.log("🎉 공통코드 기본 데이터 삽입 완료!");
|
||
|
|
} catch (error) {
|
||
|
|
console.error("❌ 오류 발생:", error);
|
||
|
|
} finally {
|
||
|
|
await prisma.$disconnect();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
insertCommonCodeData();
|