hcf-api's People
hcf-api's Issues
[API] Remover a criação do diretório intermediário durante o upload de imagens
Atualmente a API está criando um diretório com a data atual dentro do diretórios de upload no servidor.
- Remover o código para criação deste diretório, o upload deve ser feito diretamente na raíz do diretório de uploads
[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
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
Crud fases sucessionais
[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
[API] Adicionar reCAPTCHA nas rotas publicas do backend
[Infra] Obter novas imagens de Tombos
Fazer upload das imagens atualizadas para o servidor do HCF.
Crud variedades
[PYTHON] - Criar inserção de dados de tipos de usuários
Criar a inserção dos seguintes dados na tabela de tipos_usuarios:
id: 1
tipo: CURADOR
id: 2
tipo: OPERADOR
id: 3
tipo: IDENTIFICADOR
Crud vegetações
Crud relevos
[API] Aceitar seleção multipla no campo de identificadores
Dados que o painel deve aceitar a seleção de vários identificadores, se faz necessário a alteração dos endpoints na API para aceitar valores multiplos: utfpr/hcf-painel#32
- Alterar rota de cadastro
- Alterar rota de edição
- Alterar rota de detalhes
- Alterar rota de listagem (se necessário)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.