Estou com problemas com o ConnectionFactory.
var ConnectionFactory = (function () {
const stores = ['negociacoes'];
const version = 4;
const dbName = 'aluraframe';
var connection = null;
var close = null;
return class ConnectionFactory {
constructor() {
throw new Error('Não é possível criar instâncias de ConnectionFactory');
}
static getConnection() {
return new Promise((resolve, reject) => {
let openRequest = window.indexedDB.open(dbName, version);
openRequest.onupgradeneeded = e => {
ConnectionFactory._createStores(e.target.result);
};
openRequest.onsuccess = e => {
if(!connection) {
connection = e.target.result;
close = connection.close.bind(connection);
connection.close = function() {
throw new Error('Você não pode fechar diretamente a conexão');
};
}
resolve(connection);
};
openRequest.onerror = e => {
console.log(e.target.error);
reject(e.target.error.name);
};
});
}
static _createStores(connection) {
stores.forEach(store => {
if (connection.objectStoreNames.contains(store)) connection.deleteObjectStore(store);
connection.createObjectStore(store, { autoIncrement: true});
});
}
static closeConnection() {
if(connection) {
close();
connection = null;
close = null;
}
}
}
})();
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Aprendendo IndexedDB</title>
</head>
<body>
<script src="js/app/models/Negociacao.js"></script>
<script>
var connection;
var openRequest = window.indexedDB.open('aluraframe', 4);
openRequest.onupgradeneeded = e => {
console.log('Cria ou altera um banco já existente');
let minhaConnection = e.target.result;
if(minhaConnection.objectStoreNames.contains('negociacoes')) {
minhaConnection.deleteObjectStore('negociacoes');
}
minhaConnection.createObjectStore('negociacoes', { autoIncrement: true});
};
openRequest.onsuccess = e => {
console.log('Conexão obtida com sucesso');
connection = e.target.result;
};
openRequest.onerror = e => {
console.log(e.target.error);
};
function adiciona() {
let transaction = connection.transaction(['negociacoes'], 'readwrite');
let store = transaction.objectStore('negociacoes');
let negociacao = new Negociacao(new Date(), 1, 200);
let request = store.add(negociacao);
request.onsuccess = e => {
console.log('Negociação incluida com sucesso');
};
request.onerror = e => {
console.log('Não foi possível incluir a negociação');
};
}
function listaTodos() {
let transaction = connection.transaction(['negociacoes'], 'readwrite');
let store = transaction.objectStore('negociacoes');
let cursor = store.openCursor();
let negociacoes = [];
cursor.onsuccess = e => {
let atual = e.target.result;
if(atual) {
let dado = atual.value;
negociacoes.push(new Negociacao(dado._data, dado._quantidade, dado._valor));
atual.continue();
} else {
console.log(negociacoes);
}
};
cursor.onerror = e => {
console.log(e.target.error.name);
};
}
ConnectionFactory
.getConnection()
.then(connection => {
});
ConnectionFactory
.getConnection()
.then(connection => {
});
</script>
</body>
</html>