diff --git a/index.js b/index.js index d92f163..5dd00fc 100644 --- a/index.js +++ b/index.js @@ -1,12 +1,64 @@ -const mongoose = require('mongoose'); +const mongoose = require('mongoose') // Import of the model Recipe from './models/Recipe.model.js' const Recipe = require('./models/Recipe.model'); // Import of the data from './data.json' const data = require('./data'); +const { ReturnDocument } = require('mongodb'); -const MONGODB_URI = 'mongodb://localhost:27017/recipe-app'; +const MONGODB_URI = 'mongodb+srv://yerkoarcegalaz:Brd7tkNL2GATAMxX@openbootcamp.8xxrw.mongodb.net/?retryWrites=true&w=majority&appName=openbootcamp' + +async function manageRecipes() { + try { + // Connection to the database "recipe-app" + await mongoose.connect(MONGODB_URI); + console.log(`Connected to the database: "${mongoose.connection.name}"`); + + // Before adding any recipes to the database, let's remove all existing ones + await Recipe.deleteMany(); + + // Insert new recipes + const recipes = await Recipe.insertMany(data) + console.log('Recipes created!!') + recipes.forEach(recipe => { + console.log(recipe.title) + }) + + // Update recipe duration + const updatedRecipe = await Recipe.findOneAndUpdate( + { title: 'Rigatoni alla Genovese' }, + { duration: 100 }, + { new: true } + ); + + if (updatedRecipe) { + console.log('Recipe updated:', updatedRecipe); + } else { + console.log("Recipe not found"); + } + + + // Delete one recipe + const result = await Recipe.deleteOne({ title: 'Carrot Cake' }); + + if (result.deletedCount > 0) { + console.log('Recipe removed!'); + } else { + console.log("Recipe not found."); + } + + // Disconnect from the database + await mongoose.disconnect(); + + } catch (error) { + console.error('Error: ', error); + } +} + +manageRecipes() + +/* // Connection to the database "recipe-app" mongoose .connect(MONGODB_URI) @@ -17,7 +69,17 @@ mongoose }) .then(() => { // Run your code here, after you have insured that the connection was made + Recipe.insertMany(data) + .then(recipes => { + console.log('Recipes created') + recipes.forEach(recipe => { + console.log(recipe.title) + }) + mongoose.connection.close() + }) + .catch(error => console.log(`Error adding recipe: ${error}`)); }) .catch(error => { console.error('Error connecting to the database', error); }); +*/ \ No newline at end of file diff --git a/models/Recipe.model.js b/models/Recipe.model.js index 7b2ad14..1698fa4 100644 --- a/models/Recipe.model.js +++ b/models/Recipe.model.js @@ -1,8 +1,42 @@ const mongoose = require('mongoose'); -const Schema = mongoose.Schema; +const { Schema } = mongoose; const recipeSchema = new Schema({ - // TODO: write the schema + title: { + type: String, + required: true, + unique: true + }, + level: { + type: String, + enum: ['Easy Peasy', 'Amateur Chef', 'UltraPro Chef'] + }, + ingredients: { + type: [ String ], + default: [] + }, + cuisine: { + type: String, + required: true + }, + dishType: { + type: String, + enum: ['breakfast', 'main_course', 'soup', 'snack', 'drink', 'dessert', 'other'] + }, + image: { + type: String, + default: 'https://images.media-allrecipes.com/images/75131.jpg' + }, + duration: { + type: Number, + min: 0 + }, + creator: String, + created: { + type: Date, + default: Date.now + } + }); const Recipe = mongoose.model('Recipe', recipeSchema); diff --git a/package.json b/package.json index 13acab9..d397f78 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "nodemon": "^2.0.2" }, "dependencies": { + "mongodb": "^6.14.2", "mongoose": "^6.1.2" } }