This commit is contained in:
STEINNI
2025-09-11 20:39:52 +00:00
parent d4243685b6
commit 8cfa7f41e4
3 changed files with 155 additions and 26 deletions
+70
View File
@@ -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)
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
const argon2 = require('argon2')
import argon2 from 'argon2'
// --- Hash a password (e.g. at signup) ---
export async function hashPassword(plainPassword) {