Código da classe
// projeto Module Pattern
// encapsula a logica
var ConnectionFactory = (function () {
var stores = ['negociacoes'];
var version = 5;
var dbname = 'aluraframe'
var connection = null;
class ConnectionFactory {
constructor() {
throw new Error("Não é possivel criar essa instancia");
}
static getConnection() {
return new Promise((resolve, reject) => {
let openRequest = window.indexedDB.open(dbname, version);
openRequest.onupgradeneeded = e => {
this._createStores(e.target.result);
};
openRequest.onsuccess = (e) => {
if (!connection) {
connection = e.target.result;
connection.close = function () {
throw new Error('Você não pode fechar diretamente a conexão');
};
}
resolve(connection);
};
openRequest.onerror = (e) => {
reject(e.target.error.name);
};
});
}
static _createStores(conexao) {
stores.forEach(store => {
if (conexao.objectStoreNames.contains(store))
conexao.deleteObjectStore(store);
e.target.result.createObjectStore(store, {
autoIncrement: true
});
});
}
static closeConnection(){
if(connection){
connection.close();
connection = null;
}
}
}
})();
Erro obtido com a execução no console... (eu importei ele no index)