84 lines
2.1 KiB
JavaScript
84 lines
2.1 KiB
JavaScript
// 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());
|