using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // Datenbank-Pfad: /app/data im Container (Volume) - überlebt Container-Neustarts! var dbPath = Path.Combine("/app/data", "fitness.db"); builder.Services.AddDbContext(options => options.UseSqlite($"Data Source={dbPath}")); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddOpenApiDocument(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Datenbank automatisch erstellen, falls sie nicht existiert using (var scope = app.Services.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService(); db.Database.EnsureCreated(); } 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 options) : base(options) { } public DbSet Workouts => Set(); }