Zacznijmy od utworzenia tabeli zmiennych:
create table `variables`(`id` int auto_increment unique, `key` varchar(256), `value` varchar(256));
Dodajmy do niej przykładową zmienną:
insert into `variables`(`key`, `value`) values ('photo_url', 'https://static.4programmers.net/img/logo.png');
Możemy teraz odczytać wartość tej zmiennej:
select `value` from `variables` where `key`='photo_url';
A jak zarządzać tym po stronie node.js? Napisałem na szybko prostą klasę do tego:
const mysql = require('mysql');
class VariablesManager {
constructor(){
this.connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'admin',
database: 'test'
});
this.connection.connect((err) => {
if(err){
throw err;
}
});
}
Create(key, value){
return new Promise((resolve, reject) => {
let query = "insert into `variables`(`key`, `value`) values (?,?)";
this.connection.query(query, [key, value], (error, results) => {
if(error){
reject(error);
}
resolve(true);
});
});
}
Get(key){
return new Promise((resolve, reject) => {
let query = "select `value` from `variables` where `key`=?;";
this.connection.query(query, [key], (error, results) => {
if(error){
reject(error);
}
resolve(results[0].value);
});
});
}
Update(key, value){
return new Promise((resolve, reject) => {
let query = "update `variables` set `value`=? where `key`=?";
this.connection.query(query, [value, key], (error, results) => {
if(error){
reject(error);
}
resolve(true);
});
});
}
Delete(key){
return new Promise((resolve, reject) => {
let query = "delete from `variables` where `key`=?;";
this.connection.query(query, [key], (error, results) => {
if(error){
reject(error);
}
resolve(true);
});
});
}
}
module.exports = VariablesManager;
No dobrze, to czas na przykłady użycia.
Tworzenie nowej zmiennej:
const VariablesManager = require('./programs/VariablesManager');
let reader = new VariablesManager();
reader.Create('photo_url', 'https://static.4programmers.net/img/logo.png').then((value) => {
console.log(value);
}).catch((err) => {
console.error(err);
});
Pobieranie jej wartości:
const VariablesManager = require('./VariablesManager');
let reader = new VariablesManager();
reader.Get('photo_url').then((value) => {
console.log(value);
}).catch((err) => {
console.error(err);
});
Aktualizacja jej wartości:
const VariablesManager = require('./programs/VariablesManager');
let reader = new VariablesManager();
reader.Update('photo_url', 'https://static.4programmers.net/img/logo-small.png').then((value) => {
console.log(value);
}).catch((err) => {
console.error(err);
});
Oraz oczywiście usunięcie zmiennej z bazy:
const VariablesManager = require('./programs/VariablesManager');
let reader = new VariablesManager();
reader.Delete('photo_url').then((value) => {
console.log(value);
}).catch((err) => {
console.error(err);
});
Mam nadzieję, że ta prosta klasa będzie spełniała wasze oczekiwania.