mail/back/test/sql/test-utilsDb.js
2023-04-01 16:32:29 +02:00

62 lines
2.0 KiB
JavaScript

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);
}
});
});
}
}