created mysql adapter
This commit is contained in:
parent
ec7b22a6b4
commit
5905ff9afc
|
|
@ -0,0 +1,80 @@
|
||||||
|
import mysql from 'mysql2'
|
||||||
|
|
||||||
|
const mysqlAdapter = () => {
|
||||||
|
const start = config =>
|
||||||
|
mysql.createPool(
|
||||||
|
Object.assign({}, config.db, {
|
||||||
|
multipleStatements: true,
|
||||||
|
waitForConnections: true,
|
||||||
|
connectionLimit: 10,
|
||||||
|
idleTimeout: 120000 //idle connections timeout, in milliseconds, the default value is 60000
|
||||||
|
})
|
||||||
|
)
|
||||||
|
const end = conn => conn.end
|
||||||
|
|
||||||
|
const execute = (query, pool, params) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if(!query || query.trim().length === 0) {
|
||||||
|
reject(new Error('No query provided'))
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
pool.getConnection((err, conn) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
conn.config.queryFormat = function(query2, values) {
|
||||||
|
if(!values) return query2
|
||||||
|
return query2.replace(/:(\w+)/g,
|
||||||
|
(txt, key) => {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(values, key)) {
|
||||||
|
return this.escape(values[key])
|
||||||
|
}
|
||||||
|
return txt
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
conn.query(query, params, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('##### QUERY FAILED: #####')
|
||||||
|
console.error(query)
|
||||||
|
console.error('##### REASON: #####')
|
||||||
|
console.error(err)
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
resolve(result)
|
||||||
|
}
|
||||||
|
conn.destroy()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const beginTransaction = conn =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
conn.beginTransaction((err) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
resolve(conn)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const commit = conn =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
conn.commit((err) => {
|
||||||
|
if(err) {
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
resolve(conn)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return {start, end, execute, beginTransaction, commit}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default mysqlAdapter()
|
||||||
Loading…
Reference in New Issue