-
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);