complexity: mediumenhancementhelp wanted
Repository metrics
- Stars
- (88 stars)
- PR merge metrics
- (PR metrics pending)
Description
Hoje em dia para atualizar o banco de dados com os dados mais recentes do OSM o usuário deve manualmente clicar no botão de "Atualizar".

Idealmente gostaríamos que essas atualizações fossem automáticas e ocorressem o mais frequentemente possível (digamos, a cada 5 minutos).
Pra inspiração, o script abaixo pode ser rodado no console e ele irá atualizar as cidades listadas no array de cities:
const cities = [
'Aracaju, Sergipe, Brasil',
'Belém, Pará, Brasil',
'Belo Horizonte, Minas Gerais, Brasil',
'Boa Vista, Roraima, Brasil',
'Brasília, Distrito Federal, Brasil',
'Campo Grande, Mato Grosso do Sul, Brasil',
'Cuiabá, Mato Grosso, Brasil',
'Curitiba, Paraná, Brasil',
'Florianópolis, Santa Catarina, Brasil',
'Fortaleza, Ceará, Brasil',
'Goiânia, Goiás, Brasil',
'João Pessoa, Paraíba, Brasil',
'Macapá, Amapá, Brasil',
'Maceió, Alagoas, Brasil',
'Manaus, Amazonas, Brasil',
'Natal, Rio Grande do Norte, Brasil',
'Olinda, Pernambuco, Brasil',
'Palmas, Tocantins, Brasil',
'Paulista, Pernambuco, Brasil',
'Porto Alegre, Rio Grande do Sul, Brasil',
'Porto Velho, Rondônia, Brasil',
'Recife, Pernambuco, Brasil',
'Rio Branco, Acre, Brasil',
'Rio de Janeiro, Rio de Janeiro, Brasil',
'Salvador, Bahia, Brasil',
'Sao Luis, Maranhão, Brasil',
'São Paulo, São Paulo, Brasil',
'Teresina, Piauí, Brasil',
'Vitória, Espírito Santo, Brasil',
]
// Task that retrieves and processes data from OSM
const task = name => {
ciclomapa.setState({ loading: true });
return ciclomapa.getDataFromOSM({areaName: name});
}
// Apply the task iteratively to the cities in the array
cities.reduce((promiseChain, name) => {
return promiseChain.then(chainResults =>
task(name).then(currentResult =>
[...chainResults, currentResult]
)
);
}, Promise.resolve([])).then(arrayOfResults => {
console.log('All done!');
});