75 lines
2.1 KiB
C#
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>();
|
|
} |