From ba7a208da9fb93726c146520c63b7496c13b7640 Mon Sep 17 00:00:00 2001 From: Hyoseong Jo Date: Sun, 28 Dec 2025 14:10:35 +0900 Subject: [PATCH] =?UTF-8?q?Docker=20=ED=8C=8C=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/plugins/privnet-init.ts | 7 +-- backend/plugins/pubnet-init.ts | 7 +-- backend/utils/db.ts | 108 -------------------------------- 3 files changed, 4 insertions(+), 118 deletions(-) diff --git a/backend/plugins/privnet-init.ts b/backend/plugins/privnet-init.ts index a1597e8..1cfd401 100644 --- a/backend/plugins/privnet-init.ts +++ b/backend/plugins/privnet-init.ts @@ -1,18 +1,15 @@ -import { initPrivnetTables, shouldAutoStartScheduler } from '../utils/db' +import { shouldAutoStartScheduler } from '../utils/db' import { privnetScheduler } from '../utils/privnet-scheduler' export default defineNitroPlugin(async (nitroApp) => { console.log('[Plugin] privnet-init starting...') - // DB 테이블 초기화 - await initPrivnetTables() - // 스케줄러 자동 시작 (환경에 따라) if (shouldAutoStartScheduler()) { privnetScheduler.start() console.log('[Plugin] privnet scheduler auto-started (production mode)') } else { - console.log('[Plugin] privnet scheduler NOT started (development mode - use API to start)') + console.log('[Plugin] privnet scheduler NOT started (development mode)') } // 서버 종료 시 클린업 diff --git a/backend/plugins/pubnet-init.ts b/backend/plugins/pubnet-init.ts index 370892f..26154f5 100644 --- a/backend/plugins/pubnet-init.ts +++ b/backend/plugins/pubnet-init.ts @@ -1,18 +1,15 @@ -import { initPubnetTables, shouldAutoStartScheduler } from '../utils/db' +import { shouldAutoStartScheduler } from '../utils/db' import { pubnetScheduler } from '../utils/pubnet-scheduler' export default defineNitroPlugin(async (nitroApp) => { console.log('[Plugin] pubnet-init starting...') - // DB 테이블 초기화 - await initPubnetTables() - // 스케줄러 자동 시작 (환경에 따라) if (shouldAutoStartScheduler()) { pubnetScheduler.start() console.log('[Plugin] pubnet scheduler auto-started (production mode)') } else { - console.log('[Plugin] pubnet scheduler NOT started (development mode - use API to start)') + console.log('[Plugin] pubnet scheduler NOT started (development mode)') } // 서버 종료 시 클린업 diff --git a/backend/utils/db.ts b/backend/utils/db.ts index 31dbee9..9048e4a 100644 --- a/backend/utils/db.ts +++ b/backend/utils/db.ts @@ -63,121 +63,13 @@ export async function execute(sql: string, params?: any[]): Promise { * 스케줄러 자동시작 여부 */ export function shouldAutoStartScheduler(): boolean { - // 환경변수로 명시적 설정된 경우 const envValue = process.env.AUTO_START_SCHEDULER if (envValue !== undefined) { return envValue === 'true' } - // 기본값: production=true, development=false return !isDev } -/** - * pubnet 테이블 초기화 (PostgreSQL용) - */ -export async function initPubnetTables(): Promise { - const pool = getPool() - - // pubnet_targets - await pool.query(` - CREATE TABLE IF NOT EXISTS pubnet_targets ( - id SERIAL PRIMARY KEY, - name TEXT NOT NULL, - url TEXT NOT NULL UNIQUE, - is_active INTEGER DEFAULT 1, - sort_order INTEGER DEFAULT 0, - created_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS'), - updated_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS') - ) - `) - - // pubnet_logs - await pool.query(` - CREATE TABLE IF NOT EXISTS pubnet_logs ( - id SERIAL PRIMARY KEY, - target_id INTEGER NOT NULL, - is_success INTEGER NOT NULL, - checked_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS'), - FOREIGN KEY (target_id) REFERENCES pubnet_targets(id) - ) - `) - - // pubnet_status (싱글톤 패턴) - await pool.query(` - CREATE TABLE IF NOT EXISTS pubnet_status ( - id INTEGER PRIMARY KEY CHECK (id = 1), - current_index INTEGER DEFAULT 0, - check_interval INTEGER DEFAULT 300000, - is_healthy INTEGER DEFAULT 1, - last_target_id INTEGER, - last_checked_at TEXT, - scheduler_running INTEGER DEFAULT 0, - updated_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS') - ) - `) - - // 상태 행 존재 확인 및 생성 - const statusExists = await queryOne<{ cnt: number }>('SELECT COUNT(*) as cnt FROM pubnet_status') - if (!statusExists || statusExists.cnt === 0) { - await pool.query('INSERT INTO pubnet_status (id) VALUES (1)') - } - - console.log('[DB] pubnet tables initialized') -} - -/** - * privnet 테이블 초기화 (PostgreSQL용) - */ -export async function initPrivnetTables(): Promise { - const pool = getPool() - - // privnet_targets - await pool.query(` - CREATE TABLE IF NOT EXISTS privnet_targets ( - id SERIAL PRIMARY KEY, - name TEXT NOT NULL, - url TEXT NOT NULL UNIQUE, - is_active INTEGER DEFAULT 1, - sort_order INTEGER DEFAULT 0, - created_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS'), - updated_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS') - ) - `) - - // privnet_logs - await pool.query(` - CREATE TABLE IF NOT EXISTS privnet_logs ( - id SERIAL PRIMARY KEY, - target_id INTEGER NOT NULL, - is_success INTEGER NOT NULL, - checked_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS'), - FOREIGN KEY (target_id) REFERENCES privnet_targets(id) - ) - `) - - // privnet_status (싱글톤 패턴) - await pool.query(` - CREATE TABLE IF NOT EXISTS privnet_status ( - id INTEGER PRIMARY KEY CHECK (id = 1), - current_index INTEGER DEFAULT 0, - check_interval INTEGER DEFAULT 300000, - is_healthy INTEGER DEFAULT 1, - last_target_id INTEGER, - last_checked_at TEXT, - scheduler_running INTEGER DEFAULT 0, - updated_at TEXT DEFAULT to_char(NOW(), 'YYYY-MM-DD HH24:MI:SS') - ) - `) - - // 상태 행 존재 확인 및 생성 - const statusExists = await queryOne<{ cnt: number }>('SELECT COUNT(*) as cnt FROM privnet_status') - if (!statusExists || statusExists.cnt === 0) { - await pool.query('INSERT INTO privnet_status (id) VALUES (1)') - } - - console.log('[DB] privnet tables initialized') -} - /** * 연결 풀 종료 */