Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
builder.Services.AddDbContext<AppDbContext>(options =>
|
||||
options.UseSqlite("Data Source=fitness.db"));
|
||||
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddOpenApiDocument();
|
||||
builder.Services.AddSwaggerGen();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseOpenApi();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
// ===================================================================
|
||||
// CRUD ENDPUNKTE (minimal, ohne Auth)
|
||||
// ===================================================================
|
||||
|
||||
// CREATE
|
||||
app.MapPost("/api/workouts", async (Workout workout, AppDbContext db) =>
|
||||
{
|
||||
workout.Id = Guid.NewGuid();
|
||||
db.Workouts.Add(workout);
|
||||
await db.SaveChangesAsync();
|
||||
return Results.Created($"/api/workouts/{workout.Id}", workout);
|
||||
});
|
||||
|
||||
// READ ALL
|
||||
app.MapGet("/api/workouts", async (AppDbContext db) =>
|
||||
await db.Workouts.OrderByDescending(w => w.Date).ToListAsync());
|
||||
|
||||
// READ BY ID
|
||||
app.MapGet("/api/workouts/{id:guid}", async (Guid id, AppDbContext db) =>
|
||||
await db.Workouts.FindAsync(id) is Workout w ? Results.Ok(w) : Results.NotFound());
|
||||
|
||||
// UPDATE
|
||||
app.MapPut("/api/workouts/{id:guid}", async (Guid id, Workout input, AppDbContext db) =>
|
||||
{
|
||||
var workout = await db.Workouts.FindAsync(id);
|
||||
if (workout is null) return Results.NotFound();
|
||||
|
||||
workout.Name = input.Name;
|
||||
workout.Date = input.Date;
|
||||
workout.DurationMinutes = input.DurationMinutes;
|
||||
workout.Notes = input.Notes;
|
||||
await db.SaveChangesAsync();
|
||||
return Results.Ok(workout);
|
||||
});
|
||||
|
||||
// DELETE
|
||||
app.MapDelete("/api/workouts/{id:guid}", async (Guid id, AppDbContext db) =>
|
||||
{
|
||||
var workout = await db.Workouts.FindAsync(id);
|
||||
if (workout is null) return Results.NotFound();
|
||||
|
||||
db.Workouts.Remove(workout);
|
||||
await db.SaveChangesAsync();
|
||||
return Results.NoContent();
|
||||
});
|
||||
|
||||
app.MapGet("/", () => "🏋️ Fitness API läuft!");
|
||||
app.Run();
|
||||
|
||||
public class AppDbContext : DbContext
|
||||
{
|
||||
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
|
||||
public DbSet<Workout> Workouts => Set<Workout>();
|
||||
}
|
||||
Reference in New Issue
Block a user