// using System; using Aberwyn.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable namespace Aberwyn.Migrations { [DbContext(typeof(ApplicationDbContext))] [Migration("20250708104331_MakeYearMonthNullable")] partial class MakeYearMonthNullable { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "6.0.36") .HasAnnotation("Relational:MaxIdentifierLength", 64); modelBuilder.Entity("Aberwyn.Models.ApplicationUser", b => { b.Property("Id") .HasColumnType("varchar(255)"); b.Property("AccessFailedCount") .HasColumnType("int"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasColumnType("longtext"); b.Property("Email") .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("EmailConfirmed") .HasColumnType("tinyint(1)"); b.Property("LockoutEnabled") .HasColumnType("tinyint(1)"); b.Property("LockoutEnd") .HasColumnType("datetime(6)"); b.Property("NormalizedEmail") .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("NormalizedUserName") .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("PasswordHash") .HasColumnType("longtext"); b.Property("PhoneNumber") .HasColumnType("longtext"); b.Property("PhoneNumberConfirmed") .HasColumnType("tinyint(1)"); b.Property("SecurityStamp") .HasColumnType("longtext"); b.Property("TwoFactorEnabled") .HasColumnType("tinyint(1)"); b.Property("UserName") .HasMaxLength(256) .HasColumnType("varchar(256)"); b.HasKey("Id"); b.HasIndex("NormalizedEmail") .HasDatabaseName("EmailIndex"); b.HasIndex("NormalizedUserName") .IsUnique() .HasDatabaseName("UserNameIndex"); b.ToTable("AspNetUsers", (string)null); }); modelBuilder.Entity("Aberwyn.Models.AppSetting", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Key") .IsRequired() .HasColumnType("longtext"); b.Property("Value") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.ToTable("AppSettings"); }); modelBuilder.Entity("Aberwyn.Models.BudgetCategory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("BudgetCategoryDefinitionId") .HasColumnType("int"); b.Property("BudgetPeriodId") .HasColumnType("int"); b.Property("Color") .IsRequired() .HasColumnType("longtext"); b.Property("Name") .IsRequired() .HasColumnType("longtext"); b.Property("Order") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("BudgetCategoryDefinitionId"); b.HasIndex("BudgetPeriodId"); b.ToTable("BudgetCategories"); }); modelBuilder.Entity("Aberwyn.Models.BudgetCategoryDefinition", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Color") .IsRequired() .HasColumnType("longtext"); b.Property("Name") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.ToTable("BudgetCategoryDefinitions"); }); modelBuilder.Entity("Aberwyn.Models.BudgetItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Amount") .HasColumnType("decimal(65,30)"); b.Property("BudgetCategoryId") .HasColumnType("int"); b.Property("BudgetItemDefinitionId") .HasColumnType("int"); b.Property("IncludeInSummary") .HasColumnType("tinyint(1)"); b.Property("IsExpense") .HasColumnType("tinyint(1)"); b.Property("Name") .IsRequired() .HasColumnType("longtext"); b.Property("Order") .HasColumnType("int"); b.Property("PaymentStatus") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("BudgetCategoryId"); b.HasIndex("BudgetItemDefinitionId"); b.ToTable("BudgetItems"); }); modelBuilder.Entity("Aberwyn.Models.BudgetItemDefinition", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("DefaultCategory") .HasColumnType("longtext"); b.Property("DefaultPaymentStatus") .HasColumnType("int"); b.Property("IncludeInSummary") .HasColumnType("tinyint(1)"); b.Property("IsExpense") .HasColumnType("tinyint(1)"); b.Property("Name") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.ToTable("BudgetItemDefinitions"); }); modelBuilder.Entity("Aberwyn.Models.BudgetPeriod", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Month") .HasColumnType("int"); b.Property("Name") .HasColumnType("longtext"); b.Property("Order") .HasColumnType("int"); b.Property("Year") .HasColumnType("int"); b.HasKey("Id"); b.ToTable("BudgetPeriods"); }); modelBuilder.Entity("Aberwyn.Models.Ingredient", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Item") .IsRequired() .HasColumnType("longtext"); b.Property("MealId") .HasColumnType("int"); b.Property("Quantity") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.HasIndex("MealId"); b.ToTable("Ingredients"); }); modelBuilder.Entity("Aberwyn.Models.LabIngredient", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Item") .IsRequired() .HasColumnType("longtext"); b.Property("Quantity") .IsRequired() .HasColumnType("longtext"); b.Property("RecipeLabEntryId") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("RecipeLabEntryId"); b.ToTable("LabIngredients"); }); modelBuilder.Entity("Aberwyn.Models.LabVersionIngredient", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Item") .IsRequired() .HasColumnType("longtext"); b.Property("Quantity") .IsRequired() .HasColumnType("longtext"); b.Property("RecipeLabVersionId") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("RecipeLabVersionId"); b.ToTable("LabVersionIngredients"); }); modelBuilder.Entity("Aberwyn.Models.Meal", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("CarbType") .HasColumnType("longtext"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("Description") .HasColumnType("longtext"); b.Property("ImageData") .HasColumnType("longblob"); b.Property("ImageMimeType") .HasColumnType("longtext"); b.Property("ImageUrl") .HasColumnType("longtext"); b.Property("Instructions") .HasColumnType("longtext"); b.Property("IsAvailable") .HasColumnType("tinyint(1)"); b.Property("IsPublished") .HasColumnType("tinyint(1)"); b.Property("MealCategoryId") .HasColumnType("int"); b.Property("Name") .IsRequired() .HasColumnType("longtext"); b.Property("ProteinType") .HasColumnType("longtext"); b.Property("RecipeUrl") .HasColumnType("longtext"); b.Property("ThumbnailData") .HasColumnType("longblob"); b.HasKey("Id"); b.HasIndex("MealCategoryId"); b.ToTable("Meals"); }); modelBuilder.Entity("Aberwyn.Models.MealCategory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Color") .HasColumnType("longtext"); b.Property("Description") .HasColumnType("longtext"); b.Property("DisplayOrder") .HasColumnType("int"); b.Property("Icon") .HasColumnType("longtext"); b.Property("IsActive") .HasColumnType("tinyint(1)"); b.Property("Name") .IsRequired() .HasColumnType("longtext"); b.Property("Slug") .HasColumnType("longtext"); b.HasKey("Id"); b.ToTable("MealCategories"); b.HasData( new { Id = 1, Color = "#f97316", DisplayOrder = 1, Icon = "🍕", IsActive = true, Name = "Pizza", Slug = "pizza" }); }); modelBuilder.Entity("Aberwyn.Models.MealRating", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("MealId") .HasColumnType("int"); b.Property("Rating") .HasColumnType("int"); b.Property("UserId") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.HasIndex("MealId"); b.ToTable("MealRatings"); }); modelBuilder.Entity("Aberwyn.Models.PizzaOrder", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("CustomerName") .IsRequired() .HasColumnType("longtext"); b.Property("IngredientsJson") .HasColumnType("longtext"); b.Property("OrderedAt") .HasColumnType("datetime(6)"); b.Property("PizzaName") .IsRequired() .HasColumnType("longtext"); b.Property("Status") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.ToTable("PizzaOrders"); }); modelBuilder.Entity("Aberwyn.Models.PushSubscriber", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Auth") .IsRequired() .HasColumnType("longtext"); b.Property("Endpoint") .IsRequired() .HasColumnType("longtext"); b.Property("P256DH") .IsRequired() .HasColumnType("longtext"); b.Property("PizzaOrderId") .HasColumnType("int"); b.Property("UserId") .IsRequired() .HasColumnType("varchar(255)"); b.HasKey("Id"); b.HasIndex("PizzaOrderId"); b.HasIndex("UserId"); b.ToTable("PushSubscribers"); }); modelBuilder.Entity("Aberwyn.Models.RecipeLabEntry", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("BaseMealId") .HasColumnType("int"); b.Property("Category") .HasColumnType("longtext"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("Inspiration") .HasColumnType("longtext"); b.Property("Notes") .HasColumnType("longtext"); b.Property("Rating") .HasColumnType("int"); b.Property("Tags") .HasColumnType("longtext"); b.Property("TestedBy") .HasColumnType("longtext"); b.Property("Title") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.HasIndex("BaseMealId"); b.ToTable("RecipeLabEntries"); }); modelBuilder.Entity("Aberwyn.Models.RecipeLabVersion", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("Instructions") .HasColumnType("longtext"); b.Property("RecipeLabEntryId") .HasColumnType("int"); b.Property("ResultNotes") .HasColumnType("longtext"); b.Property("VersionLabel") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.HasIndex("RecipeLabEntryId"); b.ToTable("RecipeLabVersions"); }); modelBuilder.Entity("Aberwyn.Models.StoredPushSubscription", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("Auth") .IsRequired() .HasColumnType("longtext"); b.Property("Endpoint") .IsRequired() .HasColumnType("longtext"); b.Property("P256DH") .IsRequired() .HasColumnType("longtext"); b.Property("UserId") .IsRequired() .HasColumnType("varchar(255)"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("PushSubscriptions"); }); modelBuilder.Entity("Aberwyn.Models.TodoTask", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("AssignedTo") .HasColumnType("longtext"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("Description") .IsRequired() .HasColumnType("longtext"); b.Property("IsArchived") .HasColumnType("tinyint(1)"); b.Property("Priority") .HasColumnType("int"); b.Property("Status") .IsRequired() .HasColumnType("longtext"); b.Property("Tags") .IsRequired() .HasColumnType("longtext"); b.Property("Title") .IsRequired() .HasColumnType("longtext"); b.HasKey("Id"); b.ToTable("TodoTasks"); }); modelBuilder.Entity("Aberwyn.Models.UserPreferences", b => { b.Property("UserId") .HasColumnType("varchar(255)"); b.Property("NotifyBudget") .HasColumnType("tinyint(1)"); b.Property("NotifyMenu") .HasColumnType("tinyint(1)"); b.Property("NotifyPizza") .HasColumnType("tinyint(1)"); b.HasKey("UserId"); b.ToTable("UserPreferences"); }); modelBuilder.Entity("Aberwyn.Models.WeeklyMenu", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("BreakfastMealId") .HasColumnType("int"); b.Property("Cook") .HasColumnType("longtext"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("DayOfWeek") .HasColumnType("int"); b.Property("DinnerMealId") .HasColumnType("int"); b.Property("LunchMealId") .HasColumnType("int"); b.Property("WeekNumber") .HasColumnType("int"); b.Property("Year") .HasColumnType("int"); b.HasKey("Id"); b.ToTable("WeeklyMenu", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => { b.Property("Id") .HasColumnType("varchar(255)"); b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasColumnType("longtext"); b.Property("Name") .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("NormalizedName") .HasMaxLength(256) .HasColumnType("varchar(256)"); b.HasKey("Id"); b.HasIndex("NormalizedName") .IsUnique() .HasDatabaseName("RoleNameIndex"); b.ToTable("AspNetRoles", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("ClaimType") .HasColumnType("longtext"); b.Property("ClaimValue") .HasColumnType("longtext"); b.Property("RoleId") .IsRequired() .HasColumnType("varchar(255)"); b.HasKey("Id"); b.HasIndex("RoleId"); b.ToTable("AspNetRoleClaims", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); b.Property("ClaimType") .HasColumnType("longtext"); b.Property("ClaimValue") .HasColumnType("longtext"); b.Property("UserId") .IsRequired() .HasColumnType("varchar(255)"); b.HasKey("Id"); b.HasIndex("UserId"); b.ToTable("AspNetUserClaims", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => { b.Property("LoginProvider") .HasColumnType("varchar(255)"); b.Property("ProviderKey") .HasColumnType("varchar(255)"); b.Property("ProviderDisplayName") .HasColumnType("longtext"); b.Property("UserId") .IsRequired() .HasColumnType("varchar(255)"); b.HasKey("LoginProvider", "ProviderKey"); b.HasIndex("UserId"); b.ToTable("AspNetUserLogins", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => { b.Property("UserId") .HasColumnType("varchar(255)"); b.Property("RoleId") .HasColumnType("varchar(255)"); b.HasKey("UserId", "RoleId"); b.HasIndex("RoleId"); b.ToTable("AspNetUserRoles", (string)null); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => { b.Property("UserId") .HasColumnType("varchar(255)"); b.Property("LoginProvider") .HasColumnType("varchar(255)"); b.Property("Name") .HasColumnType("varchar(255)"); b.Property("Value") .HasColumnType("longtext"); b.HasKey("UserId", "LoginProvider", "Name"); b.ToTable("AspNetUserTokens", (string)null); }); modelBuilder.Entity("Aberwyn.Models.BudgetCategory", b => { b.HasOne("Aberwyn.Models.BudgetCategoryDefinition", "Definition") .WithMany() .HasForeignKey("BudgetCategoryDefinitionId"); b.HasOne("Aberwyn.Models.BudgetPeriod", "BudgetPeriod") .WithMany("Categories") .HasForeignKey("BudgetPeriodId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("BudgetPeriod"); b.Navigation("Definition"); }); modelBuilder.Entity("Aberwyn.Models.BudgetItem", b => { b.HasOne("Aberwyn.Models.BudgetCategory", null) .WithMany("Items") .HasForeignKey("BudgetCategoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Aberwyn.Models.BudgetItemDefinition", "BudgetItemDefinition") .WithMany() .HasForeignKey("BudgetItemDefinitionId"); b.Navigation("BudgetItemDefinition"); }); modelBuilder.Entity("Aberwyn.Models.Ingredient", b => { b.HasOne("Aberwyn.Models.Meal", null) .WithMany("Ingredients") .HasForeignKey("MealId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Aberwyn.Models.LabIngredient", b => { b.HasOne("Aberwyn.Models.RecipeLabEntry", "Entry") .WithMany("Ingredients") .HasForeignKey("RecipeLabEntryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Entry"); }); modelBuilder.Entity("Aberwyn.Models.LabVersionIngredient", b => { b.HasOne("Aberwyn.Models.RecipeLabVersion", "Version") .WithMany("Ingredients") .HasForeignKey("RecipeLabVersionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Version"); }); modelBuilder.Entity("Aberwyn.Models.Meal", b => { b.HasOne("Aberwyn.Models.MealCategory", "Category") .WithMany("Meals") .HasForeignKey("MealCategoryId"); b.Navigation("Category"); }); modelBuilder.Entity("Aberwyn.Models.MealRating", b => { b.HasOne("Aberwyn.Models.Meal", "Meal") .WithMany() .HasForeignKey("MealId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Meal"); }); modelBuilder.Entity("Aberwyn.Models.PushSubscriber", b => { b.HasOne("Aberwyn.Models.PizzaOrder", "PizzaOrder") .WithMany() .HasForeignKey("PizzaOrderId"); b.HasOne("Aberwyn.Models.ApplicationUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("PizzaOrder"); b.Navigation("User"); }); modelBuilder.Entity("Aberwyn.Models.RecipeLabEntry", b => { b.HasOne("Aberwyn.Models.Meal", "BaseMeal") .WithMany() .HasForeignKey("BaseMealId"); b.Navigation("BaseMeal"); }); modelBuilder.Entity("Aberwyn.Models.RecipeLabVersion", b => { b.HasOne("Aberwyn.Models.RecipeLabEntry", "Entry") .WithMany("Versions") .HasForeignKey("RecipeLabEntryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Entry"); }); modelBuilder.Entity("Aberwyn.Models.StoredPushSubscription", b => { b.HasOne("Aberwyn.Models.ApplicationUser", "User") .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("Aberwyn.Models.UserPreferences", b => { b.HasOne("Aberwyn.Models.ApplicationUser", "User") .WithOne("Preferences") .HasForeignKey("Aberwyn.Models.UserPreferences", "UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("User"); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => { b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => { b.HasOne("Aberwyn.Models.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => { b.HasOne("Aberwyn.Models.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => { b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) .WithMany() .HasForeignKey("RoleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Aberwyn.Models.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => { b.HasOne("Aberwyn.Models.ApplicationUser", null) .WithMany() .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Aberwyn.Models.ApplicationUser", b => { b.Navigation("Preferences") .IsRequired(); }); modelBuilder.Entity("Aberwyn.Models.BudgetCategory", b => { b.Navigation("Items"); }); modelBuilder.Entity("Aberwyn.Models.BudgetPeriod", b => { b.Navigation("Categories"); }); modelBuilder.Entity("Aberwyn.Models.Meal", b => { b.Navigation("Ingredients"); }); modelBuilder.Entity("Aberwyn.Models.MealCategory", b => { b.Navigation("Meals"); }); modelBuilder.Entity("Aberwyn.Models.RecipeLabEntry", b => { b.Navigation("Ingredients"); b.Navigation("Versions"); }); modelBuilder.Entity("Aberwyn.Models.RecipeLabVersion", b => { b.Navigation("Ingredients"); }); #pragma warning restore 612, 618 } } }