Git Product home page Git Product logo

hcf-api's People

Contributors

edvaldoszy avatar william-reticena avatar

Watchers

 avatar  avatar  avatar  avatar

hcf-api's Issues

[API] Falha na listagem de herbários

Technical Info

O endpoint para listagem de herbários está retornando erro (500 Internal Server Error), veja os detalhes abaixo:

2023-10-24T01:20:49.245887753Z DatabaseError [SequelizeDatabaseError]: Unknown column 'endereco->cidade.latitude' in 'field list'
2023-10-24T01:20:49.245904127Z at Query.formatError (/home/node/app/node_modules/sequelize/lib/dialects/mysql/query.js:247:16)
2023-10-24T01:20:49.245910335Z at Query.handler [as onResult] (/home/node/app/node_modules/sequelize/lib/dialects/mysql/query.js:68:23)
2023-10-24T01:20:49.245915842Z at Query.execute (/home/node/app/node_modules/mysql2/lib/commands/command.js:36:14)
2023-10-24T01:20:49.245952518Z at Connection.handlePacket (/home/node/app/node_modules/mysql2/lib/connection.js:478:34)
2023-10-24T01:20:49.245957834Z at PacketParser.onPacket (/home/node/app/node_modules/mysql2/lib/connection.js:97:12)
2023-10-24T01:20:49.245962700Z at PacketParser.executeStart (/home/node/app/node_modules/mysql2/lib/packet_parser.js:75:16)
2023-10-24T01:20:49.245967680Z at Socket.<anonymous> (/home/node/app/node_modules/mysql2/lib/connection.js:104:25)
2023-10-24T01:20:49.245972962Z at Socket.emit (node:events:513:28)
2023-10-24T01:20:49.245977672Z at addChunk (node:internal/streams/readable:324:12)
2023-10-24T01:20:49.245982396Z at readableAddChunk (node:internal/streams/readable:297:9)
2023-10-24T01:20:49.245987144Z at Readable.push (node:internal/streams/readable:234:10)
2023-10-24T01:20:49.245992088Z at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
2023-10-24T01:20:49.245996879Z parent: Error: Unknown column 'endereco->cidade.latitude' in 'field list'
2023-10-24T01:20:49.246001785Z at Packet.asError (/home/node/app/node_modules/mysql2/lib/packets/packet.js:728:17)
2023-10-24T01:20:49.246010409Z at Query.execute (/home/node/app/node_modules/mysql2/lib/commands/command.js:29:26)
2023-10-24T01:20:49.246015353Z at Connection.handlePacket (/home/node/app/node_modules/mysql2/lib/connection.js:478:34)
2023-10-24T01:20:49.246020169Z at PacketParser.onPacket (/home/node/app/node_modules/mysql2/lib/connection.js:97:12)
2023-10-24T01:20:49.246024998Z at PacketParser.executeStart (/home/node/app/node_modules/mysql2/lib/packet_parser.js:75:16)
2023-10-24T01:20:49.246030036Z at Socket.<anonymous> (/home/node/app/node_modules/mysql2/lib/connection.js:104:25)
2023-10-24T01:20:49.246035052Z at Socket.emit (node:events:513:28)
2023-10-24T01:20:49.246039746Z at addChunk (node:internal/streams/readable:324:12)
2023-10-24T01:20:49.246044904Z at readableAddChunk (node:internal/streams/readable:297:9)
2023-10-24T01:20:49.246049690Z at Readable.push (node:internal/streams/readable:234:10)
2023-10-24T01:20:49.246054479Z at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
2023-10-24T01:20:49.246074576Z code: 'ER_BAD_FIELD_ERROR',
2023-10-24T01:20:49.246079244Z errno: 1054,
2023-10-24T01:20:49.246084512Z sqlState: '42S22',
2023-10-24T01:20:49.246089117Z sqlMessage: "Unknown column 'endereco->cidade.latitude' in 'field list'",
2023-10-24T01:20:49.246094334Z sql: 'SELECT `herbarios`.`id`, `herbarios`.`nome`, `herbarios`.`caminho_logotipo`, `herbarios`.`sigla`, `herbarios`.`email`, `endereco`.`id` AS `endereco.id`, `endereco`.`numero` AS `endereco.numero`, `endereco`.`logradouro` AS `endereco.logradouro`, `endereco`.`complemento` AS `endereco.complemento`, `endereco->cidade`.`id` AS `endereco.cidade.id`, `endereco->cidade`.`nome` AS `endereco.cidade.nome`, `endereco->cidade`.`latitude` AS `endereco.cidade.latitude`, `endereco->cidade`.`longitude` AS `endereco.cidade.longitude`, `endereco->cidade->estado`.`id` AS `endereco.cidade.estado.id`, `endereco->cidade->estado`.`nome` AS `endereco.cidade.estado.nome`, `endereco->cidade->estado`.`codigo_telefone` AS `endereco.cidade.estado.codigo_telefone`, `endereco->cidade->estado->paise`.`id` AS `endereco.cidade.estado.paise.id`, `endereco->cidade->estado->paise`.`nome` AS `endereco.cidade.estado.paise.nome`, `endereco->cidade->estado->paise`.`sigla` AS `endereco.cidade.estado.paise.sigla` FROM `herbarios` AS `herbarios` LEFT OUTER JOIN `enderecos` AS `endereco` ON `herbarios`.`endereco_id` = `endereco`.`id` LEFT OUTER JOIN `cidades` AS `endereco->cidade` ON `endereco`.`cidade_id` = `endereco->cidade`.`id` LEFT OUTER JOIN `estados` AS `endereco->cidade->estado` ON `endereco->cidade`.`estado_id` = `endereco->cidade->estado`.`id` LEFT OUTER JOIN `paises` AS `endereco->cidade->estado->paise` ON `endereco->cidade->estado`.`pais_id` = `endereco->cidade->estado->paise`.`id` WHERE `herbarios`.`ativo` = true ORDER BY `herbarios`.`id` DESC LIMIT 0, 20;'

O error está sendo causado provavelmente pela modificação do banco de dados.

O painel hoje exibe esta mensagem somente

Image

Acceptance Criteria

# Given When Then
1 A tela de listagem de herbário é aberta O painel requisitar o endpoint de listagem de herbários Os dados devem ser retornados corretamente como eram antes

[API] Conversão do banco para o formato Darwin Core

Se faz necessário adaptar o script de conversão do banco de dados (em MySQL) para o CSV em formato Darwin Core. Você pode obter mais informações no website oficial do Darwin Core.

User Statement

Como Curador do Herbário

(1)
quero fazer o download do arquivo CSV em formato Darwin Core
para fazer o upload e atualização dos dados no Darwin Core com as informações do meu banco

(2)
quero fazer o download do arquivo CSV nomeado no formato HCF_DarwinCore_2023-01-23.csv
para diferenciar cada download feito por dia

Technical Info

A implementação atual está no arquivo src/controllers/darwincore-controller.js e precisa de alguns ajustes para as modificações que foram feitas no banco de dados e para melhorar o desempenho no momento de seleção dos dados e geração do arquivo.

Seleção dos dados

A seleção dos dados no banco atual é feito com um framework, o Sequelize. A sugestão é utilizar algo mais "baixo nível", como por exemplo o KnexJS escrevendo os comandos SQL e fazendo a seleção diretamente, diminuindo a complexidade do SQL gerado e evitando conversão de registros no banco em objetos complexos (feito pelo ORM).

O script faz hoje a seleção de todos os registros existentes sem limite, o que faz desperdício de recursos do servidor. Modifique para que o processo de seleção e conversão sejam feitos em lotes, com limite para seleção de dados.


Se ajudar no entendimento, esta mesma conversão está implementada baseada no banco de dados antigo (Firebird) e o código está disponível aqui FirebirdToDarwin.

Você pode também utilizar este projeto para validação do resultado, comparando o arquivo gerado pelo código em Java que se baseia no banco original com o arquivo gerado pelo código em NodeJS que se baseia no banco de dados novo.

Acceptance Criteria

# Given When Then
1 O arquivo gerado a partir do código em Java baseado no banco Firebird Comparado com o arquivo gerado pelo script em NodeJS baseado no banco MySQL Os arquivos devem conter os mesmos dados
2 O usuário fez a solicitação para geração do arquivo CSV A conversão e download do arquivo for iniciada O conteúdo deve ser entregue em partes até ser concluído

References

[API] Atualização de bibliotecas do projeto

User Statement

Como desenvolvedor do projeto da API

(1)
quero fazer uso de tecnologias mais recentes
para melhorar a produtividade e legibilidade do código

(2)
quero atualizar as bibliotecas do projeto
para evitar problemas de segurança

Technical Info

Checklist

  • Adicionar TypeScript

Acceptance Criteria

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.