44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
const sqlite3 = require('sqlite3').verbose();
|
|
const path = require('path');
|
|
|
|
const dbPath = path.resolve(__dirname, '../data', 'database.sqlite');
|
|
const db = new sqlite3.Database(dbPath);
|
|
|
|
/**
|
|
* Promise 기반으로 DB 쿼리를 실행합니다.
|
|
* @param {string} sql - 실행할 SQL 쿼리
|
|
* @param {Array} params - SQL에 바인딩할 파라미터 배열
|
|
* @returns {Promise<any>}
|
|
*/
|
|
function query(sql, params = []) {
|
|
return new Promise((resolve, reject) => {
|
|
db.all(sql, params, (err, rows) => {
|
|
if (err) {
|
|
console.error('DB 쿼리 오류:', sql, params);
|
|
return reject(err);
|
|
}
|
|
resolve(rows);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 단일 INSERT, UPDATE, DELETE 쿼리를 실행합니다.
|
|
* @param {string} sql
|
|
* @param {Array} params
|
|
* @returns {Promise<void>}
|
|
*/
|
|
function run(sql, params = []) {
|
|
return new Promise((resolve, reject) => {
|
|
db.run(sql, params, function (err) {
|
|
if (err) {
|
|
console.error('DB 실행 오류:', sql, params);
|
|
return reject(err);
|
|
}
|
|
// this.lastID, this.changes를 resolve 할 수도 있음
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
|
|
module.exports = { query, run }; |