DBE S04: cadastro e listagem de instrumentos musicais
This commit is contained in:
commit
bcf1a6d218
17 files changed
+2152
No files matched your search
@@ -0,0 +1,83 @@
|
||||
// Anderson Valadares Pinto (20251PL.TSIAD0018) [SLS]
|
||||
//
|
||||
// Popula o banco com instrumentos para testar a listagem.
|
||||
// Uso: npm run seed (insere o que ainda não existe)
|
||||
// npm run seed -- --reset (apaga tudo e insere de novo)
|
||||
|
||||
import mongoose from 'mongoose';
|
||||
|
||||
import Instrumento from './models/Instrumento.js';
|
||||
|
||||
const MONGODB_URI =
|
||||
process.env.MONGODB_URI || 'mongodb://127.0.0.1:27017/loja_instrumentos';
|
||||
|
||||
// Três cordas (dois do mesmo tipo, como pede o enunciado), preços variados
|
||||
// e nomes que permitem testar a busca depois.
|
||||
const instrumentos = [
|
||||
{
|
||||
nome: 'Guitarra Elétrica Stratocaster',
|
||||
fabricante: 'Fender',
|
||||
preco: 5490.0,
|
||||
tipo: 'Cordas',
|
||||
},
|
||||
{
|
||||
nome: 'Guitarra Acústica Folk',
|
||||
fabricante: 'Yamaha',
|
||||
preco: 2190.0,
|
||||
tipo: 'Cordas',
|
||||
},
|
||||
{
|
||||
nome: 'Baixo Elétrico SR300',
|
||||
fabricante: 'Ibanez',
|
||||
preco: 3890.0,
|
||||
tipo: 'Cordas',
|
||||
},
|
||||
{
|
||||
nome: 'Bateria Acústica Roadshow',
|
||||
fabricante: 'Pearl',
|
||||
preco: 7290.0,
|
||||
tipo: 'Percussão',
|
||||
},
|
||||
{
|
||||
nome: 'Teclado Digital Juno-DS61',
|
||||
fabricante: 'Roland',
|
||||
preco: 4590.0,
|
||||
tipo: 'Teclas',
|
||||
},
|
||||
{
|
||||
nome: 'Saxofone Alto YAS-280',
|
||||
fabricante: 'Yamaha',
|
||||
preco: 6290.0,
|
||||
tipo: 'Sopro',
|
||||
},
|
||||
];
|
||||
|
||||
async function executar() {
|
||||
await mongoose.connect(MONGODB_URI);
|
||||
|
||||
if (process.argv.includes('--reset')) {
|
||||
const removidos = await Instrumento.deleteMany({});
|
||||
console.log(`${removidos.deletedCount} instrumento(s) removido(s).`);
|
||||
}
|
||||
|
||||
let inseridos = 0;
|
||||
for (const instrumento of instrumentos) {
|
||||
// upsert por nome: rodar o seed duas vezes não duplica o estoque.
|
||||
const resultado = await Instrumento.updateOne(
|
||||
{ nome: instrumento.nome },
|
||||
{ $setOnInsert: instrumento },
|
||||
{ upsert: true }
|
||||
);
|
||||
if (resultado.upsertedCount) inseridos += 1;
|
||||
}
|
||||
|
||||
const total = await Instrumento.countDocuments();
|
||||
console.log(`${inseridos} instrumento(s) inserido(s); ${total} no total.`);
|
||||
}
|
||||
|
||||
executar()
|
||||
.catch((erro) => {
|
||||
console.error('Falha ao popular o banco:', erro.message);
|
||||
process.exitCode = 1;
|
||||
})
|
||||
.finally(() => mongoose.disconnect());
|
||||
Reference in new issue
Block a user