From 4811e1e9b790dcaf23efbc9e41396eb699e62590 Mon Sep 17 00:00:00 2001 From: Peace Date: Tue, 11 Jun 2024 14:43:56 +0900 Subject: [PATCH] use ef.inmemory --- MinimumWebAPIWithEF/DB/PizzaDb.cs | 15 +++++ .../MinimumWebAPIWithEF.csproj | 1 + MinimumWebAPIWithEF/Models/Pizza.cs | 9 +++ MinimumWebAPIWithEF/Program.cs | 60 ++++++++++++++++++- 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 MinimumWebAPIWithEF/DB/PizzaDb.cs create mode 100644 MinimumWebAPIWithEF/Models/Pizza.cs diff --git a/MinimumWebAPIWithEF/DB/PizzaDb.cs b/MinimumWebAPIWithEF/DB/PizzaDb.cs new file mode 100644 index 0000000..c49a7fd --- /dev/null +++ b/MinimumWebAPIWithEF/DB/PizzaDb.cs @@ -0,0 +1,15 @@ +using Microsoft.EntityFrameworkCore; +using MinimumWebAPIWithEF.Models; + +namespace MinimumWebAPIWithEF.DB +{ + public class PizzaDb : DbContext + { + public DbSet Pizzas { get; set; } = null; + + public PizzaDb(DbContextOptions options) : base(options) + { + + } + } +} diff --git a/MinimumWebAPIWithEF/MinimumWebAPIWithEF.csproj b/MinimumWebAPIWithEF/MinimumWebAPIWithEF.csproj index f8a132c..f409ca3 100644 --- a/MinimumWebAPIWithEF/MinimumWebAPIWithEF.csproj +++ b/MinimumWebAPIWithEF/MinimumWebAPIWithEF.csproj @@ -8,6 +8,7 @@ + diff --git a/MinimumWebAPIWithEF/Models/Pizza.cs b/MinimumWebAPIWithEF/Models/Pizza.cs new file mode 100644 index 0000000..285dc19 --- /dev/null +++ b/MinimumWebAPIWithEF/Models/Pizza.cs @@ -0,0 +1,9 @@ +namespace MinimumWebAPIWithEF.Models +{ + public class Pizza + { + public int Id { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + } +} diff --git a/MinimumWebAPIWithEF/Program.cs b/MinimumWebAPIWithEF/Program.cs index d7e36c0..9a27e03 100644 --- a/MinimumWebAPIWithEF/Program.cs +++ b/MinimumWebAPIWithEF/Program.cs @@ -1,9 +1,24 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.OpenApi.Models; +using MinimumWebAPIWithEF.DB; +using MinimumWebAPIWithEF.Models; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwaggerGen(); +builder.Services.AddSwaggerGen(c => +{ + c.SwaggerDoc("v1", new OpenApiInfo + { + Title = "PizzaStore API", + Description = "Making the Pizzas you love", + Version = "v1" + }); +}); + +builder.Services.AddDbContext(options => options.UseInMemoryDatabase("items")); var app = builder.Build(); @@ -11,11 +26,52 @@ var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); - app.UseSwaggerUI(); + app.UseSwaggerUI(c => + { + c.SwaggerEndpoint("/swagger/v1/swagger.json", "PizzaStore API V1"); + }); } app.UseHttpsRedirection(); +app.MapGet("/", () => "Hello Pizza!"); + +// Pizza routing map +app.MapGet("/pizzas", async (PizzaDb db) => await db.Pizzas.ToListAsync()); + +app.MapGet("/pizza/{id}", async (PizzaDb db, int id) => await db.Pizzas.FindAsync(id)); + +app.MapPost("/pizza", async (PizzaDb db, Pizza pizza) => +{ + await db.Pizzas.AddAsync(pizza); + await db.SaveChangesAsync(); + + return Results.Created($"/pizza/{pizza.Id}", pizza); +}); + +app.MapPut("/pizza/{id}", async (PizzaDb db, Pizza updatedPizza, int id) => +{ + var pizza = await db.Pizzas.FindAsync(id); + if (pizza is null) + return Results.NotFound(); + + pizza.Name = updatedPizza.Name; + pizza.Description = updatedPizza.Description; + await db.SaveChangesAsync(); + + return Results.NoContent(); +}); + +app.MapDelete("/pizza/{id}", async (PizzaDb db, int id) => +{ + var pizza = await db.Pizzas.FindAsync(id); + if (pizza is null) + return Results.NotFound(); + + db.Pizzas.Remove(pizza); + await db.SaveChangesAsync(); + return Results.Ok(); +}); app.Run();