TK-FB(공장관리+신고)와 M-Project(부적합관리)를 3개 독립 시스템으로 분리하기 위한 전체 코드 구조 작성. - SSO 인증 서비스 (bcrypt + pbkdf2 이중 해시 지원) - System 1: 공장관리 (TK-FB 기반, 신고 코드 제거) - System 2: 신고 (TK-FB에서 workIssue 코드 추출) - System 3: 부적합관리 (M-Project 기반) - Gateway 포털 (path-based 라우팅) - 통합 docker-compose.yml 및 배포 스크립트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
35 lines
940 B
JavaScript
35 lines
940 B
JavaScript
require('dotenv').config();
|
|
const mysql = require('mysql2/promise');
|
|
const retry = require('async-retry');
|
|
|
|
// 초기화된 pool을 export 하기 위한 변수
|
|
let pool = null;
|
|
|
|
const initPool = async () => {
|
|
if (pool) return pool; // 이미 초기화된 경우 재사용
|
|
|
|
await retry(async () => {
|
|
pool = mysql.createPool({
|
|
host: process.env.DB_HOST,
|
|
port: process.env.DB_PORT || 3306,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASS,
|
|
database: process.env.DB_NAME,
|
|
waitForConnections: true,
|
|
connectionLimit: 10,
|
|
queueLimit: 0
|
|
});
|
|
|
|
const conn = await pool.getConnection();
|
|
await conn.query('SET FOREIGN_KEY_CHECKS = 1');
|
|
console.log(`✅ MariaDB 연결 성공: ${process.env.DB_HOST}:${process.env.DB_PORT || 3306}/${process.env.DB_NAME}`);
|
|
conn.release();
|
|
}, {
|
|
retries: 10,
|
|
minTimeout: 3000
|
|
});
|
|
|
|
return pool;
|
|
};
|
|
|
|
module.exports = initPool; |