Skip to content

Commit dca9259

Browse files
committed
feat: 增加使用连接串的数据库查询插件,以便配置各类额外连接参数
1 parent ec3bcfa commit dca9259

File tree

3 files changed

+514
-0
lines changed

3 files changed

+514
-0
lines changed

packages/plugins/register.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const packagePluginList = [
2727
'drawing/baseChart',
2828
'wiki',
2929
'databaseConnection',
30+
'databaseQuery',
3031
'Doc2X',
3132
'Doc2X/PDF2text',
3233
'searchXNG',
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { Client as PgClient } from 'pg'; // PostgreSQL 客户端
2+
import mysql from 'mysql2/promise'; // MySQL 客户端
3+
import mssql from 'mssql'; // SQL Server 客户端
4+
5+
type Props = {
6+
databaseType: string;
7+
connectionString: string;
8+
sql: string;
9+
};
10+
11+
type Response = Promise<{
12+
result: any; // 根据你的 SQL 查询结果类型调整
13+
}>;
14+
15+
const main = async ({ databaseType, connectionString, sql }: Props): Response => {
16+
let result;
17+
try {
18+
if (databaseType === 'PostgreSQL') {
19+
const client = new PgClient(connectionString);
20+
21+
await client.connect();
22+
const res = await client.query(sql);
23+
result = res.rows;
24+
await client.end();
25+
} else if (databaseType === 'MySQL') {
26+
const connection = await mysql.createConnection(connectionString);
27+
28+
const [rows] = await connection.execute(sql);
29+
result = rows;
30+
await connection.end();
31+
} else if (databaseType === 'Microsoft SQL Server') {
32+
const pool = await mssql.connect(connectionString);
33+
34+
result = await pool.query(sql);
35+
await pool.close();
36+
}
37+
return {
38+
result
39+
};
40+
} catch (error: unknown) {
41+
// 使用类型断言来处理错误
42+
if (error instanceof Error) {
43+
console.error('Database query error:', error.message);
44+
return Promise.reject(error.message);
45+
}
46+
console.error('Database query error:', error);
47+
return Promise.reject('An unknown error occurred');
48+
}
49+
};
50+
51+
export default main;

0 commit comments

Comments
 (0)