修正資料庫未關閉問題

This commit is contained in:
2025-09-21 21:23:47 +08:00
parent 36e29c5a3f
commit 38ae30d611
11 changed files with 684 additions and 111 deletions

View File

@@ -40,7 +40,7 @@ import type {
// =====================================================
export class UserService extends DatabaseServiceBase {
// 創建用戶
async create(userData: Omit<User, 'id' | 'created_at' | 'updated_at'>): Promise<User> {
async create(userData: Omit<User, 'id' | 'created_at' | 'updated_at'> & { id: string }): Promise<User> {
const sql = `
INSERT INTO users (id, name, email, password_hash, avatar, department, role, join_date, total_likes, total_views, status, last_login)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -572,9 +572,9 @@ export class UserService extends DatabaseServiceBase {
}
}
// 通用查詢方法
// 通用查詢方法 - 使用安全查詢確保連線釋放
async query<T = any>(sql: string, params: any[] = []): Promise<T[]> {
return await db.query<T>(sql, params);
return await this.safeQuery<T>(sql, params);
}
// 獲取儀表板統計數據
@@ -764,21 +764,25 @@ export class UserService extends DatabaseServiceBase {
}
}
// 通用單一查詢方法
// 通用單一查詢方法 - 使用安全查詢確保連線釋放
async queryOne<T = any>(sql: string, params: any[] = []): Promise<T | null> {
return await db.queryOne<T>(sql, params);
return await this.safeQueryOne<T>(sql, params);
}
// 獲取所有用戶
async getAllUsers(limit = 50, offset = 0): Promise<User[]> {
const sql = 'SELECT * FROM users ORDER BY created_at DESC LIMIT ? OFFSET ?';
return await db.query<User>(sql, [limit, offset]);
return await this.safeQuery<User>(sql, [limit, offset]);
}
// 靜態方法保持向後兼容
static async createUser(userData: Omit<User, 'id' | 'created_at' | 'updated_at'> & { id?: string }): Promise<User> {
const service = new UserService();
return await service.create(userData);
// 確保 id 存在
if (!userData.id) {
userData.id = `user_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
}
return await service.create(userData as Omit<User, 'id' | 'created_at' | 'updated_at'> & { id: string });
}
static async getUserByEmail(email: string): Promise<User | null> {
@@ -2394,14 +2398,14 @@ export class AppService extends DatabaseServiceBase {
}
}
// 通用查詢方法
// 通用查詢方法 - 使用安全查詢確保連線釋放
async query<T = any>(sql: string, params: any[] = []): Promise<T[]> {
return await db.query<T>(sql, params);
return await this.safeQuery<T>(sql, params);
}
// 通用單一查詢方法
// 通用單一查詢方法 - 使用安全查詢確保連線釋放
async queryOne<T = any>(sql: string, params: any[] = []): Promise<T | null> {
return await db.queryOne<T>(sql, params);
return await this.safeQueryOne<T>(sql, params);
}
// 獲取應用評分統計
@@ -3269,23 +3273,6 @@ export class AppService extends DatabaseServiceBase {
}
}
// 獲取應用的收藏數量
async getAppFavoritesCount(appId: string): Promise<number> {
try {
const sql = `
SELECT COUNT(*) as count
FROM user_favorites
WHERE app_id = ?
`;
const result = await this.queryOne(sql, [appId]);
return result.count || 0;
} catch (error) {
console.error('獲取應用收藏數量錯誤:', error);
return 0;
}
}
// 獲取用戶收藏的應用ID列表不依賴 apps 表狀態)
async getUserFavoriteAppIds(userId: string): Promise<string[]> {
try {