Skip to content

Commit

Permalink
chore: lint
Browse files Browse the repository at this point in the history
  • Loading branch information
Kikobeats committed Jul 1, 2021
1 parent 02d1512 commit e8e80c2
Show file tree
Hide file tree
Showing 25 changed files with 345 additions and 208 deletions.
121 changes: 78 additions & 43 deletions packages/keyv-mongo/src/index.js
Expand Up @@ -17,18 +17,28 @@ class KeyvMongo extends EventEmitter {
url = Object.assign({ url: url.uri }, url)
}

this.options = Object.assign({
url: 'mongodb://127.0.0.1:27017',
collection: 'keyv'
}, url, options)

this.options.mongoOptions = Object.assign({
useNewUrlParser: true,
useUnifiedTopology: true
}, this.options.mongoOptions)
this.options = Object.assign(
{
url: 'mongodb://127.0.0.1:27017',
collection: 'keyv'
},
url,
options
)

this.options.mongoOptions = Object.assign(
{
useNewUrlParser: true,
useUnifiedTopology: true
},
this.options.mongoOptions
)

try {
this.client = new mongodb.MongoClient(this.options.url, this.options.mongoOptions)
this.client = new mongodb.MongoClient(
this.options.url,
this.options.mongoOptions
)
} catch (error) {
this.emit('error', error)
}
Expand All @@ -37,19 +47,31 @@ class KeyvMongo extends EventEmitter {
let listeningEvents = false
// Implementation from sql by lukechilds,
this.connect = new Promise(resolve => {
this.client.connect()
this.client
.connect()
.then(client => {
this.db = client.db(this.options.db)
this.store = this.db.collection(this.options.collection)
this.store.createIndex({ key: 1 }, {
unique: true,
background: true
})
this.store.createIndex({ expiresAt: 1 }, {
expireAfterSeconds: 0,
background: true
})
for (const method of ['updateOne', 'findOne', 'deleteOne', 'deleteMany']) {
this.store.createIndex(
{ key: 1 },
{
unique: true,
background: true
}
)
this.store.createIndex(
{ expiresAt: 1 },
{
expireAfterSeconds: 0,
background: true
}
)
for (const method of [
'updateOne',
'findOne',
'deleteOne',
'deleteMany'
]) {
this.store[method] = pify(this.store[method].bind(this.store))
}

Expand All @@ -65,46 +87,59 @@ class KeyvMongo extends EventEmitter {
}

get (key) {
return this.connect
.then(store => store.findOne({ key: { $eq: key } })
.then(doc => {
if (doc === null) {
return undefined
}

return doc.value
})
)
return this.connect.then(store =>
store.findOne({ key: { $eq: key } }).then(doc => {
if (doc === null) {
return undefined
}

return doc.value
})
)
}

set (key, value, ttl) {
const expiresAt = (typeof ttl === 'number') ? new Date(Date.now() + ttl) : null
return this.connect
.then(store => store.updateOne({ key: { $eq: key } }, { $set: { key, value, expiresAt } }, { upsert: true }))
const expiresAt =
typeof ttl === 'number' ? new Date(Date.now() + ttl) : null
return this.connect.then(store =>
store.updateOne(
{ key: { $eq: key } },
{ $set: { key, value, expiresAt } },
{ upsert: true }
)
)
}

delete (key) {
if (typeof key !== 'string') {
return Promise.resolve(false)
}

return this.connect
.then(store => store.deleteOne({ key: { $eq: key } })
return this.connect.then(store =>
store
.deleteOne({ key: { $eq: key } })
.then(object => object.deletedCount > 0)
)
)
}

clear () {
return this.connect
.then(store => store.deleteMany({ key: new RegExp(`^${this.namespace + ':'}`) })
.then(() => undefined))
return this.connect.then(store =>
store
.deleteMany({ key: new RegExp(`^${this.namespace + ':'}`) })
.then(() => undefined)
)
}

async * iterator () {
const iterator = await this.connect
.then(store => store.find({ key: new RegExp(`^${this.namespace ? this.namespace + ':' : '.*'}`) }).map(x => {
return [x.key, x.value]
}))
const iterator = await this.connect.then(store =>
store
.find({
key: new RegExp(`^${this.namespace ? this.namespace + ':' : '.*'}`)
})
.map(x => {
return [x.key, x.value]
})
)
yield * iterator
}
}
Expand Down
8 changes: 6 additions & 2 deletions packages/keyv-mongo/test/test.js
@@ -1,11 +1,15 @@
const test = require('ava')
'use strict'

const keyvTestSuite = require('@keyvhq/keyv-test-suite')
const Keyv = require('@keyvhq/keyv')
const KeyvMongo = require('../')
const test = require('ava')

const KeyvMongo = require('..')

const mongoURL = process.env.MONGO_URL || 'mongodb://127.0.0.1:27017'
const store = () => new KeyvMongo(mongoURL)
keyvTestSuite(test, Keyv, store)

test('Collection option merges into default options', t => {
const store = new KeyvMongo({ collection: 'foo' })
t.deepEqual(store.options, {
Expand Down
2 changes: 2 additions & 0 deletions packages/keyv-mysql/package.json
Expand Up @@ -30,6 +30,8 @@
"mysql2": "2.2.5"
},
"devDependencies": {
"@keyvhq/keyv-test-suite": "latest",
"@keyvhq/keyv": "latest",
"ava": "latest",
"nyc": "latest"
},
Expand Down
23 changes: 13 additions & 10 deletions packages/keyv-mysql/src/index.js
Expand Up @@ -9,17 +9,20 @@ class KeyvMysql extends KeyvSql {
options = { uri: options }
}

options = Object.assign({
dialect: 'mysql',
uri: 'mysql://localhost'
}, options)
options = Object.assign(
{
dialect: 'mysql',
uri: 'mysql://localhost'
},
options
)

options.connect = () => Promise.resolve()
.then(() => mysql.createConnection(options.uri))
.then(connection => {
return sql => connection.execute(sql)
.then(data => data[0])
})
options.connect = () =>
Promise.resolve()
.then(() => mysql.createConnection(options.uri))
.then(connection => {
return sql => connection.execute(sql).then(data => data[0])
})

super(options)
}
Expand Down
7 changes: 5 additions & 2 deletions packages/keyv-mysql/test/test.js
@@ -1,7 +1,10 @@
const test = require('ava')
'use strict'

const keyvTestSuite = require('@keyvhq/keyv-test-suite')
const Keyv = require('@keyvhq/keyv')
const KeyvMysql = require('../')
const test = require('ava')

const KeyvMysql = require('..')

const dbUrl = process.env.MYSQL_URL || 'mysql://root:root@localhost/keyv_test'
const store = () => new KeyvMysql(dbUrl)
Expand Down
1 change: 1 addition & 0 deletions packages/keyv-postgres/package.json
Expand Up @@ -31,6 +31,7 @@
},
"devDependencies": {
"@keyvhq/keyv-test-suite": "latest",
"@keyvhq/keyv": "latest",
"ava": "latest",
"nyc": "latest"
},
Expand Down
18 changes: 10 additions & 8 deletions packages/keyv-postgres/src/index.js
Expand Up @@ -5,19 +5,21 @@ const Pool = require('pg').Pool

class KeyvPostgres extends KeyvSql {
constructor (options) {
options = Object.assign({
dialect: 'postgres',
uri: 'postgresql://localhost:5432'
}, options)
options = Object.assign(
{
dialect: 'postgres',
uri: 'postgresql://localhost:5432'
},
options
)

options.connect = () => Promise.resolve()
.then(() => {
options.connect = () =>
Promise.resolve().then(() => {
const pool = new Pool({
connectionString: options.uri,
ssl: options.ssl
})
return sql => pool.query(sql)
.then(data => data.rows)
return sql => pool.query(sql).then(data => data.rows)
})

super(options)
Expand Down
13 changes: 10 additions & 3 deletions packages/keyv-postgres/test/test.js
@@ -1,7 +1,14 @@
const test = require('ava')
'use strict'

const keyvTestSuite = require('@keyvhq/keyv-test-suite')
const Keyv = require('@keyvhq/keyv')
const KeyvPostgres = require('../')
const test = require('ava')

const KeyvPostgres = require('..')

const store = () =>
new KeyvPostgres({
uri: 'postgresql://postgres:postgres@localhost:5432/keyv_test'
})

const store = () => new KeyvPostgres({ uri: 'postgresql://postgres:postgres@localhost:5432/keyv_test' })
keyvTestSuite(test, Keyv, store)
7 changes: 5 additions & 2 deletions packages/keyv-redis/test/test.js
@@ -1,8 +1,11 @@
const test = require('ava')
'use strict'

const keyvTestSuite = require('@keyvhq/keyv-test-suite')
const Keyv = require('@keyvhq/keyv')
const KeyvRedis = require('../')
const Redis = require('ioredis')
const test = require('ava')

const KeyvRedis = require('..')

const { REDIS_HOST = 'localhost' } = process.env
const redisURI = `redis://${REDIS_HOST}`
Expand Down
41 changes: 23 additions & 18 deletions packages/keyv-sql/test/test.js
@@ -1,29 +1,34 @@
const test = require('ava')
'use strict'

const keyvTestSuite = require('@keyvhq/keyv-test-suite')
const Keyv = require('@keyvhq/keyv')
const KeyvSql = require('../')

const sqlite3 = require('sqlite3')
const pify = require('pify')
const test = require('ava')

const KeyvSql = require('..')

class TestSqlite extends KeyvSql {
constructor (options) {
options = Object.assign({
dialect: 'sqlite',
db: 'test/testdb.sqlite'
}, options)
options = Object.assign(
{
dialect: 'sqlite',
db: 'test/testdb.sqlite'
},
options
)

options.connect = () => new Promise((resolve, reject) => {
const db = new sqlite3.Database(options.db, error => {
if (error) {
reject(error)
} else {
db.configure('busyTimeout', 30000)
resolve(db)
}
})
})
.then(db => pify(db.all).bind(db))
options.connect = () =>
new Promise((resolve, reject) => {
const db = new sqlite3.Database(options.db, error => {
if (error) {
reject(error)
} else {
db.configure('busyTimeout', 30000)
resolve(db)
}
})
}).then(db => pify(db.all).bind(db))

super(options)
}
Expand Down
2 changes: 2 additions & 0 deletions packages/keyv-sqlite/package.json
Expand Up @@ -30,6 +30,8 @@
"sqlite3": "^5.0.2"
},
"devDependencies": {
"@keyvhq/keyv-test-suite": "latest",
"@keyvhq/keyv": "latest",
"ava": "latest",
"nyc": "latest"
},
Expand Down

0 comments on commit e8e80c2

Please sign in to comment.