UNPKG

tssqlite

Version:

sqlite3 object relation mapper written in TypeScript

76 lines (75 loc) 2.6 kB
/// <reference path="../typings/tsd.d.ts" /> var sqlite3 = require('sqlite3'); var fs = require('fs'); var _ = require('underscore'); var Sqlite = (function () { function Sqlite(createCmd, map, callback, filePath) { this.map = map; this.pkg = JSON.parse(fs.readFileSync('./package.json', 'UTF-8')); if (filePath === undefined) { filePath = this.pkg.databasePath; } var m; var re = /TABLE (IF NOT EXISTS)? ?(\w*)/i; if ((m = re.exec(createCmd)) !== null) { if (m.index === re.lastIndex) { re.lastIndex++; } this.table = _.last(m); } this.db = new sqlite3.Database(filePath); this.db.exec(createCmd, callback); } Sqlite.prototype.close = function (callback) { this.db.close(callback); }; Sqlite.prototype.insert = function (cmd, params, callback) { this.db.run(cmd, params, callback); }; Sqlite.prototype.delete = function (cmd, params, callback) { this.db.run(cmd, params, callback); }; Sqlite.prototype.where = function (select, params, callback) { var _this = this; this.db.all(select, params, function (error, rows) { if (error === null && rows !== undefined) { var elements = []; rows.forEach(function (element) { elements.push(_this.map(element)); }); callback(error, elements); } else { callback(error, null); } }); }; Sqlite.prototype.all = function (callback) { var _this = this; this.db.all('SELECT * FROM ' + this.table, function (error, rows) { if (error === null && rows !== undefined) { var elements = []; rows.forEach(function (element) { elements.push(_this.map(element)); }); callback(error, elements); } else { callback(error, null); } }); }; Sqlite.prototype.get = function (select, params, callback) { var _this = this; this.db.get(select, params, function (error, row) { if (error === null && row !== undefined) { callback(error, _this.map(row)); } else { callback(error, null); } }); }; return Sqlite; })(); module.exports = Sqlite;