Browse Source

Extract sequelize logic into subclass

emp
Luke Childs 7 years ago
committed by Jytesh
parent
commit
314b8e6e2b
  1. 2
      packages/keyv-sqlite/package.json
  2. 60
      packages/keyv-sqlite/src/index.js

2
packages/keyv-sqlite/package.json

@ -38,7 +38,7 @@
},
"homepage": "https://github.com/lukechilds/keyv-sqlite",
"dependencies": {
"sequelize": "^4.4.2",
"keyv-sequelize": "0.0.0",
"sqlite3": "^3.1.8"
},
"devDependencies": {

60
packages/keyv-sqlite/src/index.js

@ -1,71 +1,21 @@
'use strict';
const EventEmitter = require('events');
const Sequelize = require('sequelize');
const KeyvSequelize = require('keyv-sequelize');
class KeyvSqlite extends EventEmitter {
class KeyvSqlite extends KeyvSequelize {
constructor(opts) {
super();
this.ttlSupport = false;
opts = opts || {};
if (typeof opts === 'string') {
opts = { uri: opts };
}
this.opts = Object.assign({
opts = Object.assign({
dialect: 'sqlite',
uri: 'sqlite://:memory:',
table: 'keyv',
logging: false
}, opts);
const sequelize = new Sequelize(this.opts.uri, this.opts);
this.Entry = sequelize.define(this.opts.table, {
key: {
primaryKey: true,
unique: true,
type: Sequelize.STRING
},
value: {
type: Sequelize.TEXT
}
}, {
timestamps: false
});
this.connected = sequelize.authenticate()
.then(() => sequelize.sync())
.catch(err => this.emit('error', err));
}
get(key) {
return this.connected
.then(() => this.Entry.findById(key))
.then(data => {
if (data === null) {
return undefined;
}
return data.get('value');
});
}
set(key, value) {
return this.connected
.then(() => this.Entry.upsert({ key, value }));
}
delete(key) {
return this.connected
.then(() => this.Entry.destroy({ where: { key } }))
.then(items => items > 0);
}
clear() {
return this.connected
.then(() => this.Entry.destroy({
where: {
key: { $like: `${this.namespace}:%` }
}
}))
.then(() => undefined);
super(opts);
}
}

Loading…
Cancel
Save