UNPKG

anki-apkg-generator

Version:
75 lines (57 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _createHash = _interopRequireDefault(require("create-hash")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class Db { constructor(sql, template) { _defineProperty(this, "db", void 0); _defineProperty(this, "getLastItem", obj => { var keys = Object.keys(obj); var lastKey = keys[keys.length - 1]; return obj[lastKey]; }); this.db = new sql.Database(); this.db.run(template); } update(query, obj) { this.db.prepare(query).getAsObject(obj); } getInitialRowValue(table) { var column = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'id'; var query = "select ".concat(column, " from ").concat(table); var result = this._getFirstVal(query); return result; } _getFirstVal(query) { return JSON.parse(this.db.exec(query)[0].values[0][0]); } getId(table, col, ts) { var query = "SELECT ".concat(col, " from ").concat(table, " WHERE ").concat(col, " >= :ts ORDER BY ").concat(col, " DESC LIMIT 1"); var rowObj = this.db.prepare(query).getAsObject({ ':ts': ts }); return rowObj[col] ? Number(rowObj[col]) + 1 : ts; } getNoteId(guid, ts) { var query = 'SELECT id from notes WHERE guid = :guid ORDER BY id DESC LIMIT 1'; var rowObj = this.db.prepare(query).getAsObject({ ':guid': guid }); return Number(rowObj.id) || this.getId('notes', 'id', ts); } generateGuid(deckId, name) { return (0, _createHash.default)('sha1').update("".concat(deckId).concat(name)).digest('utf8'); } getCardId(noteId, ts) { var query = 'SELECT id from cards WHERE nid = :note_id ORDER BY id DESC LIMIT 1'; var rowObj = this.db.prepare(query).getAsObject({ ':note_id': noteId }); return rowObj.id || this.getId('cards', 'id', ts); } } exports.default = Db;