90 lines
2.5 KiB
TypeScript
90 lines
2.5 KiB
TypeScript
// =====================================================
|
|
// 智能資料庫服務範例
|
|
// =====================================================
|
|
|
|
import { smartPool } from './smart-connection-pool';
|
|
|
|
// 這是一個範例,展示如何使用智能連線池
|
|
// 你可以將現有的資料庫服務改為使用這個方式
|
|
|
|
export class SmartDatabaseService {
|
|
// 智能查詢範例
|
|
static async getUserById(userId: string, requestId?: string) {
|
|
return await smartPool.executeQueryOne(
|
|
'SELECT * FROM users WHERE id = ?',
|
|
[userId],
|
|
{
|
|
userId,
|
|
sessionId: requestId,
|
|
requestId: `getUserById_${Date.now()}`
|
|
}
|
|
);
|
|
}
|
|
|
|
// 智能插入範例
|
|
static async createUser(userData: any, requestId?: string) {
|
|
return await smartPool.executeInsert(
|
|
'INSERT INTO users (name, email, department) VALUES (?, ?, ?)',
|
|
[userData.name, userData.email, userData.department],
|
|
{
|
|
userId: userData.id,
|
|
sessionId: requestId,
|
|
requestId: `createUser_${Date.now()}`
|
|
}
|
|
);
|
|
}
|
|
|
|
// 智能更新範例
|
|
static async updateUser(userId: string, userData: any, requestId?: string) {
|
|
return await smartPool.executeUpdate(
|
|
'UPDATE users SET name = ?, email = ?, department = ? WHERE id = ?',
|
|
[userData.name, userData.email, userData.department, userId],
|
|
{
|
|
userId,
|
|
sessionId: requestId,
|
|
requestId: `updateUser_${Date.now()}`
|
|
}
|
|
);
|
|
}
|
|
|
|
// 智能刪除範例
|
|
static async deleteUser(userId: string, requestId?: string) {
|
|
return await smartPool.executeDelete(
|
|
'DELETE FROM users WHERE id = ?',
|
|
[userId],
|
|
{
|
|
userId,
|
|
sessionId: requestId,
|
|
requestId: `deleteUser_${Date.now()}`
|
|
}
|
|
);
|
|
}
|
|
|
|
// 獲取連線統計
|
|
static getConnectionStats() {
|
|
return smartPool.getConnectionStats();
|
|
}
|
|
|
|
// 強制清理連線
|
|
static forceCleanup() {
|
|
return smartPool.forceCleanup();
|
|
}
|
|
}
|
|
|
|
// 使用範例:
|
|
/*
|
|
// 在 API 路由中使用
|
|
export async function GET(request: NextRequest) {
|
|
const { searchParams } = new URL(request.url);
|
|
const userId = searchParams.get('userId');
|
|
const requestId = request.headers.get('x-request-id') || 'unknown';
|
|
|
|
try {
|
|
const user = await SmartDatabaseService.getUserById(userId, requestId);
|
|
return NextResponse.json({ success: true, data: user });
|
|
} catch (error) {
|
|
return NextResponse.json({ success: false, error: error.message }, { status: 500 });
|
|
}
|
|
}
|
|
*/
|