const fs = require('fs'); // 1. 파일 시스템 모듈 가져오기 const sqlite3 = require('sqlite3').verbose(); const path = require('path'); const dbPath = path.resolve(__dirname, 'data', 'database.sqlite'); // 2. 데이터베이스 파일이 이미 존재하는지 확인 if (fs.existsSync(dbPath)) { console.log(`데이터베이스 파일이 이미 존재합니다. 초기화를 건너뜁니다: ${dbPath}`); // 파일이 있으면 스크립트를 여기서 종료 return; } // --- 아래 코드는 파일이 없을 때만 실행됩니다 --- console.log("새로운 데이터베이스 파일을 생성하고 초기화를 시작합니다..."); const db = new sqlite3.Database(dbPath, (err) => { if (err) { console.error("데이터베이스 연결 실패:", err.message); } else { console.log(`SQLite 데이터베이스에 성공적으로 연결되었습니다: ${dbPath}`); } }); // 테이블 생성을 순차적으로 실행 db.serialize(() => { console.log("테이블 생성을 시작합니다..."); // 1. DOMAIN_LIST db.run(` CREATE TABLE DOMAIN_LIST ( DOMAIN_SEQ_ID INTEGER PRIMARY KEY, DOMAIN_NM TEXT, DOMAIN_ADDRS TEXT, DOMAIN_DESC TEXT, USE_YN TEXT DEFAULT 'Y', RGST_DTTM TEXT ) `, (err) => { if (err) console.error("DOMAIN_LIST 테이블 생성 오류:", err.message); else console.log("DOMAIN_LIST 테이블이 성공적으로 생성되었습니다."); }); // 2. DOMAIN_ACCNT_LIST db.run(` CREATE TABLE DOMAIN_ACCNT_LIST ( DOMAIN_SEQ_ID INTEGER NOT NULL, DOMAIN_ACCNT_ID TEXT NOT NULL, DOMAIN_ACCNT_PSWRD TEXT, LAST_ATNDNC_DTTM TEXT, MESRMNT_STRT_TM INTEGER DEFAULT 8, MESRMNT_END_TM INTEGER DEFAULT 20, MESRMNT_TM_INCLSN_PRBLTY INTEGER DEFAULT 95, ATNDNC_STRT_DTTM TEXT, ATNDNC_STTS_CD TEXT, DOMAIN_ACCNT_DESC TEXT, USE_YN TEXT DEFAULT 'Y', RGST_DTTM TEXT, USER_AGENT TEXT, PRIMARY KEY (DOMAIN_SEQ_ID, DOMAIN_ACCNT_ID) ) `, (err) => { if (err) console.error("DOMAIN_ACCNT_LIST 테이블 생성 오류:", err.message); else console.log("DOMAIN_ACCNT_LIST 테이블이 성공적으로 생성되었습니다."); }); // 3. ACT_LIST db.run(` CREATE TABLE ACT_LIST ( DOMAIN_SEQ_ID INTEGER NOT NULL, ACT_ORD INTEGER NOT NULL, ACT_TYP_CD TEXT, ACT_DTL_JSON TEXT CHECK(json_valid(ACT_DTL_JSON)), RETRY_YN TEXT, RGST_DTTM TEXT, PRIMARY KEY (DOMAIN_SEQ_ID, ACT_ORD) ) `, (err) => { if (err) console.error("ACT_LIST 테이블 생성 오류:", err.message); else console.log("ACT_LIST 테이블이 성공적으로 생성되었습니다."); }); // 4. ATNDNC_LOG db.run(` CREATE TABLE ATNDNC_LOG ( DOMAIN_SEQ_ID INTEGER NOT NULL, DOMAIN_ACCNT_ID TEXT NOT NULL, ATNDNC_DT TEXT NOT NULL, LOG_SEQ_ID INTEGER NOT NULL, LOG_MSG TEXT, LOG_DTTM TEXT, PRIMARY KEY (DOMAIN_SEQ_ID, DOMAIN_ACCNT_ID, ATNDNC_DT, LOG_SEQ_ID) ) `, (err) => { if (err) console.error("ATNDNC_LOG 테이블 생성 오류:", err.message); else console.log("ATNDNC_LOG 테이블이 성공적으로 생성되었습니다."); }); }); // 데이터베이스 연결 종료 db.close((err) => { if (err) { console.error("데이터베이스 연결 종료 실패:", err.message); } else { console.log("데이터베이스 초기화 및 연결 종료가 완료되었습니다."); } });