anki-apkg-generator
Version:
generate anki's apkg file by code
75 lines (57 loc) • 2.19 kB
JavaScript
;
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;