using Microsoft.EntityFrameworkCore; using Microsoft.OpenApi.Models; var builder = WebApplication.CreateBuilder(args); var allowSpecificOrigins = "_AllowSpecificOrigins"; builder.Services.AddDbContext(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "BarkMan API", Description = "BARK BARK WOOF WOOF", Version = "v1" }); }); builder.Services.AddCors(options => { options.AddPolicy(name: allowSpecificOrigins, policy => { policy.WithOrigins("https://barkdev.ts.drewr.io", "http://localhost:5173").AllowAnyMethod(); }); }); var app = builder.Build(); if (!app.Environment.IsProduction()) { app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Bark Inventory API V1"); }); } app.MapGet("/", () => "Hello World!"); 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" }); }); using (var serviceScope = app.Services.CreateScope()) { var dbContext = serviceScope.ServiceProvider.GetRequiredService(); dbContext.Database.Migrate(); } app.UseCors(allowSpecificOrigins); app.Run();