-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest-rss-db.js
More file actions
130 lines (114 loc) · 4.7 KB
/
test-rss-db.js
File metadata and controls
130 lines (114 loc) · 4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// dotenv를 가장 먼저 로드하고 설정해야 함
import dotenv from "dotenv";
import { fileURLToPath } from "url";
import { dirname, join } from "path";
import { existsSync, readFileSync } from "fs";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// .env 파일 경로 확인
const envPath = join(__dirname, ".env");
console.log("📁 .env 파일 경로:", envPath);
console.log("📁 .env 파일 존재:", existsSync(envPath));
// .env 파일 내용 확인 (처음 몇 줄만)
if (existsSync(envPath)) {
try {
const envContent = readFileSync(envPath, "utf8");
const lines = envContent.split("\n").slice(0, 5);
console.log("📄 .env 파일 내용 (처음 5줄):");
lines.forEach((line, i) => {
if (line.trim() && !line.trim().startsWith("#")) {
// 비밀번호는 마스킹
const masked = line.replace(/=(.+)$/, "=***");
console.log(` ${i + 1}: ${masked}`);
} else {
console.log(` ${i + 1}: ${line}`);
}
});
} catch (e) {
console.warn("⚠️ .env 파일 읽기 실패:", e.message);
}
}
// dotenv 설정 (다른 모듈을 import하기 전에 먼저 실행)
// override: false로 설정하면 이미 설정된 환경 변수는 덮어쓰지 않음
const result = dotenv.config({ path: envPath, override: false });
if (result.error) {
console.warn("⚠️ .env 파일 로드 실패:", result.error.message);
console.warn(" 에러 상세:", result.error);
} else {
console.log("✅ .env 파일 로드 성공");
if (result.parsed) {
console.log(" 로드된 환경 변수:", Object.keys(result.parsed).length + "개");
console.log(" 환경 변수 키:", Object.keys(result.parsed).join(", "));
} else {
console.log(" ⚠️ 파싱된 환경 변수가 없습니다 (이미 로드되었을 수 있음)");
}
}
// 환경 변수가 설정된 후에 다른 모듈 import
import { getConnectionPool, closeConnection } from "./app/utils/db.js";
import { processRSSFeed as processGeekNewsRSS } from "./app/hook/geeknews/geeknews.js";
import { processRSSFeed as processVelopersRSS } from "./app/hook/velopers/velopers.js";
async function testDBConnection() {
console.log("=== DB 연결 테스트 ===");
try {
const pool = getConnectionPool();
const [rows] = await pool.execute("SELECT 1 as test");
console.log("✅ DB 연결 성공:", rows);
return true;
} catch (error) {
console.error("❌ DB 연결 실패:", error.message || error);
return false;
}
}
async function testRSSFeed(processRSSFeed, feedName) {
console.log(`\n=== ${feedName} RSS 피드 처리 테스트 ===`);
try {
const result = await processRSSFeed();
if (result.success) {
console.log(
`✅ ${feedName} RSS 피드 처리 완료: ${result.savedCount}개의 포스트 저장됨`
);
if (result.errorCount > 0) {
console.warn(`⚠️ ${result.errorCount}개의 오류가 발생했습니다.`);
}
} else {
console.error(`❌ ${feedName} RSS 피드 처리 실패:`, result.error);
}
return result.success;
} catch (error) {
console.error(`❌ ${feedName} RSS 피드 처리 실패:`, error.message || error);
return false;
}
}
async function main() {
console.log("\n=== 환경 변수 확인 ===");
console.log("DB_HOST:", process.env.DB_HOST || "(설정되지 않음)");
console.log("DB_PORT:", process.env.DB_PORT || "(설정되지 않음)");
console.log("DB_USER:", process.env.DB_USER || "(설정되지 않음)");
console.log("DB_NAME:", process.env.DB_NAME || "(설정되지 않음)");
console.log("DB_CHANNEL_ID:", process.env.DB_CHANNEL_ID || "(설정되지 않음)");
console.log("DB_REGISTER_ID:", process.env.DB_REGISTER_ID || "(설정되지 않음)");
console.log("\n=== 테스트 시작 ===\n");
// DB 연결 테스트
const dbConnected = await testDBConnection();
if (dbConnected) {
// RSS 피드 처리 테스트 (GeekNews와 Velopers 모두 테스트)
await testRSSFeed(processGeekNewsRSS, "GeekNews");
await testRSSFeed(processVelopersRSS, "Velopers");
} else {
console.log("\n⚠️ DB 연결 실패로 RSS 피드 처리를 건너뜁니다.");
console.log("DB 설정을 확인해주세요:");
console.log("- DB_HOST:", process.env.DB_HOST);
console.log("- DB_PORT:", process.env.DB_PORT);
console.log("- DB_USER:", process.env.DB_USER);
console.log("- DB_NAME:", process.env.DB_NAME);
}
// 연결 종료
try {
await closeConnection();
console.log("\n✅ DB 연결 종료 완료");
} catch (error) {
console.warn("⚠️ DB 연결 종료 중 오류:", error.message || error);
}
console.log("\n테스트 완료");
}
main().catch(console.error);