login ok
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import mysql from 'mysql2/promise'
|
||||
|
||||
export class MySQLClient {
|
||||
constructor(db, kal = 0) {
|
||||
this.db = db
|
||||
this.lastInsertedId = -1
|
||||
this.kalIntervalId = null
|
||||
if(kal > 0){
|
||||
this.kalIntervalId = setInterval(() => {
|
||||
this.db.query('SELECT 1')
|
||||
}, 1000 * kal);
|
||||
}
|
||||
}
|
||||
|
||||
async close(){
|
||||
if(this.db) await this.db.end()
|
||||
if(this.kalIntervalId) clearInterval(this.kalIntervalId)
|
||||
this.db = null
|
||||
}
|
||||
|
||||
escape(x) { return(mysql.escape(x)) }
|
||||
|
||||
async execute(query, values = []){
|
||||
if(!this.db) return([])
|
||||
if(query.search(RegExp('(^|;) *(INSERT|REPLACE) +INTO','i'))>-1) this.lastInsertedId = -1
|
||||
const [result] = await this.db.execute(query, values)
|
||||
|
||||
if('insertId' in result) {
|
||||
this.lastInsertedId = result.insertId
|
||||
}
|
||||
return(result)
|
||||
}
|
||||
|
||||
/* Makes a multi-line VALUES insert, with values for an array of objects { columns:value }
|
||||
*/
|
||||
async InsertObjectsStatement(table, rows){
|
||||
this.lastInsertedId = -1
|
||||
if((!this.db) || (rows.length==0)) return([])
|
||||
const keys = Object.keys(rows[0]).map((key) => `\`${key}\``).join(', ')
|
||||
let valuesArr = []
|
||||
for(let row of rows){
|
||||
valuesArr.push(Object.values(row))
|
||||
}
|
||||
const query = `INSERT INTO ${table} (${keys}) VALUES ?`
|
||||
const [result] = await this.db.query(query, [valuesArr]) //Note the wierd array in array of arrays, also, query, not execute
|
||||
if('insertId' in result) {
|
||||
this.lastInsertedId = result.insertId
|
||||
}
|
||||
return(result)
|
||||
}
|
||||
|
||||
/* Makes a multi-line VALUES insert, with values for an array of objects { columns:value }
|
||||
*/
|
||||
async ReplaceObjectsStatement(table, rows){
|
||||
this.lastInsertedId = -1
|
||||
if((!this.db) || (rows.length==0)) return([])
|
||||
const keys = Object.keys(rows[0]).map((key) => `\`${key}\``).join(', ')
|
||||
let valuesArr = []
|
||||
for(let row of rows){
|
||||
valuesArr.push(Object.values(row))
|
||||
}
|
||||
const query = `REPLACE INTO ${table} (${keys}) VALUES ?`
|
||||
const [result] = await this.db.query(query, [valuesArr]) //Note the wierd array in array of arrays, also, query, not execute
|
||||
if('insertId' in result) {
|
||||
this.lastInsertedId = result.insertId
|
||||
}
|
||||
return(result)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user