mirror of
https://github.com/BarkProductions/barkman.git
synced 2026-06-12 22:11:54 +00:00
96 lines
2.7 KiB
C#
96 lines
2.7 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.OpenApi.Models;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
var allowSpecificOrigins = "_AllowSpecificOrigins";
|
|
|
|
builder.Services.AddDbContext<BarkContext>();
|
|
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("barkdev.ts.drewr.io","localhost:5145");
|
|
});
|
|
});
|
|
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<BarkContext>();
|
|
dbContext.Database.Migrate();
|
|
}
|
|
|
|
app.UseCors(allowSpecificOrigins);
|
|
|
|
app.Run();
|