Initial Commit

This commit is contained in:
Ben Mosley
2026-05-05 16:07:48 -05:00
commit 0a6e2a2aae
1180 changed files with 200620 additions and 0 deletions

108
backend/server.js Normal file
View File

@@ -0,0 +1,108 @@
var express = require("express");
var { MongoClient, ObjectId } = require("mongodb");
var cors = require("cors");
var bodyParser = require("body-parser");
var app = express();
app.use(cors());
app.use(bodyParser.json());
var CONNECTION_STRING = "mongodb://localhost:27017";
var DATABASENAME = "recipedb";
var database;
async function startServer() {
var client = new MongoClient(CONNECTION_STRING);
await client.connect();
database = client.db(DATABASENAME);
console.log("MongoDB Successfully Connected");
app.listen(5038, () => {
console.log("Server running on port 5038");
});
}
startServer().catch(err => {
console.error("Failed to connect to MongoDB:", err.message);
process.exit(1);
});
// GET all recipes
app.get("/api/recipes/GetRecipes", async (_request, response) => {
try {
var result = await database.collection("recipes").find({}).toArray();
response.send(result);
} catch (error) {
response.status(500).send({ message: error.message });
}
});
// GET single recipe by id
app.get("/api/recipes/GetRecipe/:id", async (request, response) => {
try {
var result = await database.collection("recipes").findOne(
{ _id: new ObjectId(request.params.id) }
);
if (!result) return response.status(404).send({ message: "Recipe not found" });
response.send(result);
} catch (error) {
response.status(500).send({ message: error.message });
}
});
// POST create a new recipe
app.post("/api/recipes/AddRecipe", async (request, response) => {
try {
var recipe = {
title: request.body.title,
description: request.body.description,
category: request.body.category,
ingredients: request.body.ingredients,
instructions: request.body.instructions,
prepTime: request.body.prepTime,
cookTime: request.body.cookTime,
rating: request.body.rating,
createdAt: new Date()
};
var result = await database.collection("recipes").insertOne(recipe);
response.send(result);
} catch (error) {
response.status(500).send({ message: error.message });
}
});
// PUT update a recipe by id
app.put("/api/recipes/UpdateRecipe/:id", async (request, response) => {
try {
var result = await database.collection("recipes").updateOne(
{ _id: new ObjectId(request.params.id) },
{
$set: {
title: request.body.title,
description: request.body.description,
category: request.body.category,
ingredients: request.body.ingredients,
instructions: request.body.instructions,
prepTime: request.body.prepTime,
cookTime: request.body.cookTime,
rating: request.body.rating
}
}
);
response.send(result);
} catch (error) {
response.status(500).send({ message: error.message });
}
});
// DELETE a recipe by id
app.delete("/api/recipes/DeleteRecipe/:id", async (request, response) => {
try {
var result = await database.collection("recipes").deleteOne(
{ _id: new ObjectId(request.params.id) }
);
response.send(result);
} catch (error) {
response.status(500).send({ message: error.message });
}
});