From 837599917224c1aa059356250d2d1edebc81373e Mon Sep 17 00:00:00 2001 From: Drew Rautenberg Date: Wed, 8 Jan 2025 19:30:52 -0600 Subject: [PATCH] Add CRUD endpoints for inventory management Implemented GET, POST, PUT, and DELETE endpoints for the `/inventory` resource. These endpoints provide full CRUD functionality, handling operations such as retrieval, creation, update, and deletion of inventory items in the database. Adds appropriate error handling for cases where inventory items are not found. --- barkmanAPI/Program.cs | 60 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/barkmanAPI/Program.cs b/barkmanAPI/Program.cs index 3db11ec..5840703 100644 --- a/barkmanAPI/Program.cs +++ b/barkmanAPI/Program.cs @@ -1,7 +1,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Models; - var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext(); @@ -24,14 +23,57 @@ if (app.Environment.IsDevelopment()) app.MapGet("/", () => "Hello World!"); -// app.MapGet("/inventory", async (InventoryItems dbContext) => -// { -// var inventoryItems = await dbContext.Set().ToListAsync(); -// return Results.Ok(inventoryItems); -// }); +app.MapGet("/inventory", async (BarkContext db) => + await db.Inventory.ToListAsync()); + +app.MapGet("/inventory/{id}", async (int id, BarkContext db) => +{ + var item = await db.Inventory.FindAsync(id); + if (item == null) + { + return Results.NotFound(new { Message = "Inventory item not found" }); + } + return Results.Ok(item); +}); + +app.MapPut("/inventory/{id}", async (int id, InventoryItems updatedItem, BarkContext db) => +{ + var existingItem = await db.Inventory.FindAsync(id); + if (existingItem == null) + { + return Results.NotFound(new { Message = "Inventory item not found" }); + } + + existingItem.Name = updatedItem.Name; + existingItem.Brand = updatedItem.Brand; + existingItem.SerialNumber = updatedItem.SerialNumber; + existingItem.Status = updatedItem.Status; + existingItem.RentalPrice = updatedItem.RentalPrice; + existingItem.ReplacementCost = updatedItem.ReplacementCost; + existingItem.Notes = updatedItem.Notes; + + await db.SaveChangesAsync(); + return Results.Ok(existingItem); + }); + + +app.MapPost("/inventory", async (InventoryItems newItem, BarkContext db) => +{ + db.Inventory.Add(newItem); + await db.SaveChangesAsync(); + return Results.Created($"/inventory/{newItem.Id}", newItem); +}); + +app.MapDelete("/inventory/{id}", async (int id, BarkContext db) => +{ + var item = await db.Inventory.FindAsync(id); + if (item == null) { + return Results.NotFound(new { Message = "Inventory item not found" }); + } + db.Inventory.Remove(item); + await db.SaveChangesAsync(); + return Results.Ok(new { Message = "Inventory item deleted successfully" }); +}); -//app.MapGet("/inventory/{id}", (int id) => InventoryDb.GetInventory(id)); -//app.MapPut("/inventory", (InventoryItem item) => InventoryDb.UpdateItem(item)); -//app.MapDelete("/inventory/{id}", (int id) => InventoryDb.RemoveItem(id)); app.Run(); \ No newline at end of file