Initial commit

This commit is contained in:
2026-06-04 06:24:56 +02:00
commit 282f4864c4
111 changed files with 8083 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
using MealPlan.Api.Models;
using Microsoft.EntityFrameworkCore;
namespace MealPlan.Api.Data;
/// <summary>
/// Database-first context for the existing PostgreSQL database.
/// Tables are mapped explicitly; this context never creates or alters schema.
/// </summary>
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<Recipe> Recipes => Set<Recipe>();
public DbSet<Ingredient> Ingredients => Set<Ingredient>();
public DbSet<RecipeStep> RecipeSteps => Set<RecipeStep>();
public DbSet<ApplicationUser> Users => Set<ApplicationUser>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.HasDefaultSchema("diet");
modelBuilder.Entity<Recipe>(e =>
{
e.HasKey(r => r.Id);
e.Property(r => r.Id).UseIdentityByDefaultColumn();
e.Property(r => r.Protein).HasColumnType("numeric(6,2)");
e.Property(r => r.Fat).HasColumnType("numeric(6,2)");
e.Property(r => r.Carbs).HasColumnType("numeric(6,2)");
e.HasMany(r => r.Ingredients)
.WithOne(i => i.Recipe!)
.HasForeignKey(i => i.RecipeId)
.OnDelete(DeleteBehavior.Cascade);
e.HasMany(r => r.Steps)
.WithOne(s => s.Recipe!)
.HasForeignKey(s => s.RecipeId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<Ingredient>(e =>
{
e.HasKey(i => i.Id);
e.Property(i => i.Id).UseIdentityByDefaultColumn();
e.Property(i => i.AmountGrams).HasColumnType("numeric(8,2)");
});
modelBuilder.Entity<RecipeStep>(e =>
{
e.HasKey(s => s.Id);
e.Property(s => s.Id).UseIdentityByDefaultColumn();
});
modelBuilder.Entity<ApplicationUser>(e =>
{
e.HasKey(u => u.Id);
e.Property(u => u.Id).HasColumnType("uuid");
});
}
}