Search This Blog

2023/08/30

Mysql SingleTone class

inside MysqlSingleTon.js


 const mysql = require('mysql');


class MysqlConnection {
constructor() {
this.connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'sangram#81',
database: 'playground'
});

this.connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL:', err);
return;
}
console.log('Connected to MySQL');
});
}

query(sql, values) {
return new Promise((resolve, reject) => {
this.connection.query(sql, values, (err, results) => {
if (err) {
reject(err);
return;
}
resolve(results);
});
});
}

close() {
return new Promise((resolve, reject) => {
this.connection.end((err) => {
if (err) {
console.error('Error closing MySQL connection:', err);
reject(err);
return;
}
console.log('MySQL connection closed');
resolve();
});
});
}

}

class MySQLSingleton {
constructor() {
if (!MySQLSingleton.instance) {
MySQLSingleton.instance = new MysqlConnection()
}
}
getInstance() {
return MySQLSingleton.instance
}
}


const instance = new MySQLSingleton();
Object.freeze(instance);

module.exports = instance;



consuming class created

const instance = require('./MysqlSingleTon')

const connection = instance.getInstance()

connection.query("SELECT * FROM emp;")
.then((result) => {
console.log(result);
})
.catch((error) => {
console.error(error);
})
.finally(() => {
connection.close()
.catch((error) => {
console.error(error);
});
});

No comments:

Post a Comment