Files
fitness-app/apps/api/Program.cs
T

75 lines
2.1 KiB
C#

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>();
}