const sqlite3 = require('sqlite3').verbose(); const path = require('path'); const fs = require('fs'); const dbPath = path.resolve(__dirname, '../database.sqlite'); const db = new sqlite3.Database(dbPath); // Promisify query method const query = (sql, params = []) => { return new Promise((resolve, reject) => { // Handle SELECT vs INSERT/UPDATE/DELETE const trimmedSql = sql.trim().toUpperCase(); if (trimmedSql.startsWith('SELECT') || trimmedSql.startsWith('PRAGMA')) { db.all(sql, params, (err, rows) => { if (err) { console.error('Database query error:', err); reject(err); } else { resolve(rows); } }); } else { db.run(sql, params, function(err) { if (err) { console.error('Database execution error:', err); reject(err); } else { // Normalize result to look like MySQL result // this.lastID, this.changes resolve({ insertId: this.lastID, affectedRows: this.changes, warningStatus: 0 }); } }); } }); }; // Mock Pool object for compatibility const pool = { query: query, execute: (sql, params) => query(sql, params).then(res => [res]), // Wrap in array for mysql2 compatibility getConnection: () => Promise.resolve({ release: () => {}, query: query, execute: (sql, params) => query(sql, params).then(res => [res]), beginTransaction: () => query('BEGIN TRANSACTION'), commit: () => query('COMMIT'), rollback: () => query('ROLLBACK') }) }; const testConnection = async () => { try { await query('SELECT 1'); console.log('SQLite 数据库连接成功'); return true; } catch (error) { console.error('SQLite 数据库连接失败:', error.message); return false; } }; module.exports = { pool, query, testConnection };