diff --git a/common/db.js b/common/db.js index 5b0a2d6f990b1d3afeb1456ab03b5556efdb8c12..f82732bc498a461e49cf3a0e889c6d50266fd52e 100644 --- a/common/db.js +++ b/common/db.js @@ -42,25 +42,32 @@ class KaraDatabase { /* Call this as a destructor */ close() { this.m_db.close(); - logger.log("info", "Close database " + karaPath); + logger.log("info", `Close database ${this.m_karaPath}`); } /* Search from the kara table, a string. Can be anything (query, name, etc). - * - queryString: String */ + * - queryString: String + * => A promise, callback with [(id: Int, string: String, cat: String, type: String)] */ search(queryString) { - let __sqlQuery = - `SELECT id, string - FROM kara - WHERE string LIKE ? OR author COLLATE nocase = ?` - ; - db.all(sql, [`%${queryString}%`, queryString], (err, rows) => { - if (err) { - throw err; - } - rows.forEach((row) => { - logger.log("debug", `[${row.id}] -> ${row.string}`); + var __ret = []; + let __sqlQuery = `SELECT id, string, category AS cat, (song_type || song_number) AS type + FROM kara + WHERE string LIKE ? OR author_name COLLATE nocase = ?`; + + function __getRecords(db) { + return new Promise(resolv => { + db.all(__sqlQuery, [`%${queryString}%`, queryString], (err, rows) => { + if (err) { + logger.log("error", err); + throw err; + } + rows.forEach((row) => { __ret.push(row); }); + resolv(__ret); + }); }); - }); + }; + + return __getRecords(this.m_db); } } diff --git a/common/kara.js b/common/kara.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/test/test_db.js b/test/test_db.js index 186b187764950b298009c4ba9e2e2e006cc23e66..ba3fad0a1290216ec30266cc0b99f888d3f96976 100644 --- a/test/test_db.js +++ b/test/test_db.js @@ -1,4 +1,7 @@ -const logger = require.main.require('../common/logger.js'); -const KaraDatabase = require.main.require('../common/db.js'); +const logger = require.main.require('./common/logger.js'); +const KaraDatabase = require.main.require('./common/db.js'); var myDb = new KaraDatabase("/home/kara/kara.db"); + +myDb.search(`kubat`).then( val => logger.log("debug", val) ) +myDb.close()