danvitoriano / negociacoes

JavaScript Object Oriented Stock Negotiations Web App Site Project
https://danvitoriano.github.io/negociacoes/client/index.html
1 stars 37 forks source link

Padrão Factory em um Serviço de Conexões para IndexedDB #15

Open danvitoriano opened 4 years ago

danvitoriano commented 4 years ago

No desafio de IndexedDB, aprendemos a interagir com o indexedDB, nós também incluímos e listamos negociações em uma Object Store.

Dúvidas e mais informações sobre IndexedDB podem ser encontradas no material da área do aluno Web_Moderna_Desafio_D_JavaScript.pdf.

Pensando na manutenção do nosso código, precisamos organizá-lo. Esta issue propõe a criação de uma ConnectionFactory para resolver a conexão com o nosso IndexedDB:

ConnectionFactory
    .getConnection()
    .then(connection => {
    });

A) O método getConnection() será um método estático, ou seja, invocado diretamente na classe.

B) O retorno de getConnection será uma promise, pois a abertura de uma conexão é um processo assíncrono.

C) Não importa quantas vezes seja chamado o método getConnection(), a conexão retornada deve ser a mesma.

D) Toda conexão possui o método close(), mas o programador não pode chamá-lo, porque a conexão é a mesma para a aplicação inteira. Só o próprio ConnectionFactory pode fechar a conexão.

Para entender o que queremos dizer quando falamos que a conexão retornada pelo método getConnection() deve ser a mesma, usaremos um exemplo compreensível para aqueles que trabalham com aplicações Web ou Back end. Existe um pool de conexões, no qual várias conexões são compartilhadas com os usuários. Quando trabalhamos com o IndexedDB, é comum termos uma única conexão que será usada pela aplicação. Ao criarmos a chamada para o getConnection, ele nos dará a conexão e se fizermos a mesma solicitação novamente, o retorno deverá ser o mesmo. A conexão será compartilhada com toda a aplicação e, por isso, o método close() não poderá ser chamado novamente. Lembrando que só o ConnectionFactory terá o poder de fechar a conexão.

O construtor de ConnectionFactory deve lançar uma erro caso alguém tente implementar essa classe.

A promise retornada pelo getConnection será responsável por lidar com os métodos onupgradeneeded, onsuccess e onerror.

IMPORTANTE: Esta Issue pode ser resolvida com o arquivo indexedDB.html ou após a resolução da issue #8. Quem assumí-la, e escolher a segunda opção, precisará conversar com os responsáveis pela issue dependente, alinhar prazos, e ajudar se necessário no desenvolvimento da mesma.

Para entender mais sobre o padrão de projeto Factory, leia o post no Medium Padrão de Projeto Factory. Você deve criar sua ConnectionFactory dentro da pasta /services.


IMPORTANTE

  • Para assumir esta issue, comente aqui seu interesse com nome e RM. O limite de pessoas responsáveis por uma issue é de no máximo 4 usuários. Os 4 primeiros a demonstrar interesse serão automaticamente "Assigned" para issue formando um grupo responsável por resolvê-la e gerenciar a discussão nos comentários.
  • Verifique se esta issue possui relação e dependência coom outras issues. Você provalvelmente vai precisar conversar atraves dos comentários e de maneira pública com os reponsáveis pelas issues relacionadas.
  • Não esqueça de sempre buscar a atualização mais recente da branch master do repositório upstream e mescla-lá com a branch da sua issue.
  • Resolva os conflitos caso hajam.
  • Caso ao abrir sua Pull Request apareça a mensagem Can't automatically merge, verifique se um novo código já foi mesclado na master entre o período que você finalizou suas alterações locais até o momento da abertura de solicitação do Code Review. Caso isso aconteça, você precisará atualizar seu código local e repetir a abertura da sua solicitação.
  • Para mais informações sobre repositórios upstream, git pull, git push, git merge e abertura de Pull Requests, consulte a Ajuda na nossa Wiki.
marcosautomacao commented 4 years ago

Boa noite professor. Gostaria de assumir esta tarefa. Obrigado Marcos de Menezes Souto Moura - RM 335907

danvitoriano commented 4 years ago

Adicionado na issue @marcosautomacao ! Como o limite é 4 pessoas, ainda pode entrar mais 3, ok? Boa sorte!

marcosautomacao commented 4 years ago

Boa noite professor. Não seria o contrario, a issue #8 que tem dependencia com a issue #15?

jeanvillete commented 4 years ago

Boa noite professor Eu conversei com o @marcosautomacao, e gostaria de saber se eu posso fazer parte desta tarefa também com ele. Lembrando que eu já estou com a issue #8, mas elas parecem ser correspondentes e se compor.

Se possível, colocar o @marcosautomacao também na #8.

Obrigado, boa noite.

danvitoriano commented 4 years ago

Eu sugiro @jeanvillete e @marcosautomacao resolverem apenas a issue #8

O prazo já estourou, escolham a mais simples. Vou dar unassigned de vocês aqui.