Files
VTHacks-12/server/storage/collections/recipes.js
2024-09-15 06:37:59 -04:00

74 lines
1.7 KiB
JavaScript

import mongoose from "mongoose";
import { v4 as uuidv4 } from 'uuid';
const reqString = {
type: String,
required: true
}
const recipesSchema = new mongoose.Schema({
id: reqString,
description: String,
userID: String,
ingredients: Array,
instructions: Array,
name: String,
nutritionFacts: Object,
rating: Number,
cuisine: String,
expense: Number,
mealType: Object,
ratingCount: Number
}, { timestamps: true });
export default class Recipes {
constructor() {
this.model = mongoose.model('recipes', recipesSchema);
this.upsert = { upsert: true };
}
async create(recipe) {
let Id = uuidv4();
await this.model.findOneAndUpdate({ id: Id }, {
id: Id,
userID: recipe.userID,
ingredients: recipe.ingredients,
description: recipe.description,
name: recipe.name,
nutritionFacts: recipe.nutritionFacts,
cuisine: recipe.cuisine,
expense: recipe.expense,
mealType: recipe.mealType,
instructions: recipe.instructions,
ratingCount: 0,
rating: 0,
}, this.upsert);
return await this.get(Id);
}
async get(Id) {
return await this.model.findOne({ id: Id });
}
async getAll(query) {
return await this.model.find(query);
}
async update(Id, data) {
if(!(await this.get(Id))) return null;
await this.model.findOneAndUpdate({ id: Id }, data, this.upsert);
return await this.get(Id);
}
async delete(Id) {
let result = await this.get(Id);
if(!result) return false;
await this.model.deleteOne({ id: Id })
return true;
}
}