Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ConnectionFactory is not defined.

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>
1 resposta
solução!

Já verifiquei que tinha esquecido de importar o service para o HTML.