const mysql from "; export class TestDb { constructor (options) { this.options = options; this.db; } async init () { return new Promise((resolve, reject) => { this.db = mysql.createConnection({ host: this.options.databaseOptions.host, user: this.options.databaseOptions.user, password: this.options.databaseOptions.pwd, database: this.options.databaseOptions.database, }); this.db.connect(async function (err) { if (err) { reject("Impossible de se connecter", err.code) } else { if (this.options.dbSchema) { const schema = fs.readFileSync(this.options.dbSchema, 'utf8'); await this.execQueryAsync(schema, []); resolve("Database successfully connected and created !") } else { resolve("Database successfully connected"); } } }); }); } cleanTables() { const query = "SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_schema = ?"; const values = [this.options.databaseOptions.database]; this.execQueryAsync(query, values).then((results) => { this.execQuery("SET FOREIGN_KEY_CHECKS=0"); results.map((table) => { execQuery("DROP TABLE " + table.table_name); }); }); } execQuery(query, values) { db.query(query, values, (err, results, fields) => { }); } async execQueryAsync(query, values) { return new Promise((resolve, reject) => { db.query(query, values, (err, results, fields) => { if (err) { reject(err); } else { resolve(results); } }); }); } }