using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.OpenApi.Models; using System; using System.Collections.Generic; using System.Linq; var builder = WebApplication.CreateBuilder(args); builder.Services.AddSingleton(); // Add Swagger services builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); }); var app = builder.Build(); // Configure the HTTP request pipeline. app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); app.MapGet("/", (DrugstoreService service) => service.GetAll()); app.MapGet("/drugstores/{id}", (DrugstoreService service, Guid id) => { var drugstore = service.Get(id); return drugstore is not null ? Results.Ok(drugstore) : Results.NotFound(); }); app.MapPost("/drugstores", (DrugstoreService service, Drugstore drugstore) => { service.Create(drugstore); return Results.Created($"/drugstores/{drugstore.Id}", drugstore); }); app.MapPut("/drugstores/{id}", (DrugstoreService service, Drugstore updatedDrugstore, Guid id) => { var drugstore = service.Get(id); if (drugstore is null) return Results.NotFound(); service.Update(updatedDrugstore); return Results.Ok(updatedDrugstore); }); app.MapDelete("/drugstores/{id}", (DrugstoreService service, Guid id) => { service.Delete(id); return Results.Ok(); }); app.Run(); public record Drugstore(Guid Id, string Name, string Address); public class DrugstoreService { private readonly List _drugstores = new(); public List GetAll() => _drugstores; public Drugstore? Get(Guid id) => _drugstores.FirstOrDefault(d => d.Id == id); public void Create(Drugstore newDrugstore) => _drugstores.Add(newDrugstore); public void Update(Drugstore updatedDrugstore) { var index = _drugstores.FindIndex(d => d.Id == updatedDrugstore.Id); if (index == -1) return; _drugstores[index] = updatedDrugstore; } public void Delete(Guid id) { var drugstore = Get(id); if (drugstore is null) return; _drugstores.Remove(drugstore); } }