// 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());