//
using System;
using CampusErrand.Data;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace CampusErrand.Migrations
{
[DbContext(typeof(AppDbContext))]
partial class AppDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "10.0.3")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("CampusErrand.Models.Appeal", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("OrderId")
.HasColumnType("int");
b.Property("Result")
.IsRequired()
.HasMaxLength(1024)
.HasColumnType("nvarchar(1024)");
b.HasKey("Id");
b.HasIndex("OrderId");
b.ToTable("Appeals");
});
modelBuilder.Entity("CampusErrand.Models.Banner", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("ImageUrl")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("IsEnabled")
.HasColumnType("bit");
b.Property("LinkType")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("LinkUrl")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("SortOrder")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("SortOrder");
b.ToTable("Banners");
});
modelBuilder.Entity("CampusErrand.Models.CommissionRule", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("MaxAmount")
.HasColumnType("decimal(10,2)");
b.Property("MinAmount")
.HasColumnType("decimal(10,2)");
b.Property("Rate")
.HasColumnType("decimal(10,4)");
b.Property("RateType")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("CommissionRules");
});
modelBuilder.Entity("CampusErrand.Models.Dish", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("IsEnabled")
.HasColumnType("bit");
b.Property("Name")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property("Photo")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("Price")
.HasColumnType("decimal(10,2)");
b.Property("ShopId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ShopId");
b.ToTable("Dishes");
});
modelBuilder.Entity("CampusErrand.Models.Earning", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Commission")
.HasColumnType("decimal(10,2)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("FrozenUntil")
.HasColumnType("datetime2");
b.Property("GoodsAmount")
.HasColumnType("decimal(10,2)");
b.Property("NetEarning")
.HasColumnType("decimal(10,2)");
b.Property("OrderId")
.HasColumnType("int");
b.Property("PlatformFee")
.HasColumnType("decimal(10,2)");
b.Property("Status")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("OrderId");
b.HasIndex("UserId");
b.ToTable("Earnings");
});
modelBuilder.Entity("CampusErrand.Models.FoodOrderItem", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("DishId")
.HasColumnType("int");
b.Property("OrderId")
.HasColumnType("int");
b.Property("Quantity")
.HasColumnType("int");
b.Property("ShopId")
.HasColumnType("int");
b.Property("UnitPrice")
.HasColumnType("decimal(10,2)");
b.HasKey("Id");
b.HasIndex("DishId");
b.HasIndex("OrderId");
b.HasIndex("ShopId");
b.ToTable("FoodOrderItems");
});
modelBuilder.Entity("CampusErrand.Models.MessageRead", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("MessageId")
.HasColumnType("int");
b.Property("MessageType")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property("ReadAt")
.HasColumnType("datetime2");
b.Property("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId", "MessageType", "MessageId")
.IsUnique();
b.ToTable("MessageReads");
});
modelBuilder.Entity("CampusErrand.Models.Order", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("AcceptedAt")
.HasColumnType("datetime2");
b.Property("Commission")
.HasColumnType("decimal(10,2)");
b.Property("CompletedAt")
.HasColumnType("datetime2");
b.Property("CompletionProof")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("DeliveryLocation")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property("GoodsAmount")
.HasColumnType("decimal(10,2)");
b.Property("IsReviewed")
.HasColumnType("bit");
b.Property("ItemName")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property("OrderNo")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property("OrderType")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("OwnerId")
.HasColumnType("int");
b.Property("Phone")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
b.Property("PickupLocation")
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property("Remark")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("RunnerId")
.HasColumnType("int");
b.Property("Status")
.IsRequired()
.HasColumnType("nvarchar(450)");
b.Property("TotalAmount")
.HasColumnType("decimal(10,2)");
b.HasKey("Id");
b.HasIndex("OrderNo")
.IsUnique();
b.HasIndex("OwnerId");
b.HasIndex("RunnerId");
b.HasIndex("Status");
b.ToTable("Orders");
});
modelBuilder.Entity("CampusErrand.Models.PriceChange", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("ChangeType")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("InitiatorId")
.HasColumnType("int");
b.Property("NewPrice")
.HasColumnType("decimal(10,2)");
b.Property("OrderId")
.HasColumnType("int");
b.Property("OriginalPrice")
.HasColumnType("decimal(10,2)");
b.Property("Status")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("InitiatorId");
b.HasIndex("OrderId");
b.ToTable("PriceChanges");
});
modelBuilder.Entity("CampusErrand.Models.Review", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Content")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("IsDisabled")
.HasColumnType("bit");
b.Property("OrderId")
.HasColumnType("int");
b.Property("Rating")
.HasColumnType("int");
b.Property("RunnerId")
.HasColumnType("int");
b.Property("ScoreChange")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("OrderId");
b.HasIndex("RunnerId");
b.ToTable("Reviews");
});
modelBuilder.Entity("CampusErrand.Models.RunnerCertification", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("Phone")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
b.Property("RealName")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property("ReviewedAt")
.HasColumnType("datetime2");
b.Property("Status")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("RunnerCertifications");
});
modelBuilder.Entity("CampusErrand.Models.ServiceEntry", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("IconUrl")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("IsEnabled")
.HasColumnType("bit");
b.Property("Name")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("nvarchar(32)");
b.Property("PagePath")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property("SortOrder")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("SortOrder");
b.ToTable("ServiceEntries");
});
modelBuilder.Entity("CampusErrand.Models.Shop", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("IsEnabled")
.HasColumnType("bit");
b.Property("Location")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
b.Property("Name")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property("Notice")
.HasMaxLength(1024)
.HasColumnType("nvarchar(1024)");
b.Property("PackingFeeAmount")
.HasColumnType("decimal(10,2)");
b.Property("PackingFeeType")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Photo")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.HasKey("Id");
b.ToTable("Shops");
});
modelBuilder.Entity("CampusErrand.Models.ShopBanner", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("ImageUrl")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("ShopId")
.HasColumnType("int");
b.Property("SortOrder")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ShopId");
b.ToTable("ShopBanners");
});
modelBuilder.Entity("CampusErrand.Models.SystemConfig", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Key")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property("UpdatedAt")
.HasColumnType("datetime2");
b.Property("Value")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("Key")
.IsUnique();
b.ToTable("SystemConfigs");
});
modelBuilder.Entity("CampusErrand.Models.SystemMessage", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Content")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("TargetType")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("TargetUserIds")
.HasColumnType("nvarchar(max)");
b.Property("ThumbnailUrl")
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("Title")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.HasKey("Id");
b.ToTable("SystemMessages");
});
modelBuilder.Entity("CampusErrand.Models.User", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("AvatarUrl")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("IsBanned")
.HasColumnType("bit");
b.Property("Nickname")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)");
b.Property("OpenId")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property("Phone")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("nvarchar(20)");
b.Property("Role")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("RunnerScore")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("OpenId")
.IsUnique();
b.HasIndex("Phone");
b.ToTable("Users");
});
modelBuilder.Entity("CampusErrand.Models.Withdrawal", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
b.Property("Amount")
.HasColumnType("decimal(10,2)");
b.Property("CreatedAt")
.HasColumnType("datetime2");
b.Property("PaymentMethod")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("QrCodeImage")
.IsRequired()
.HasMaxLength(512)
.HasColumnType("nvarchar(512)");
b.Property("Status")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Withdrawals");
});
modelBuilder.Entity("CampusErrand.Models.Appeal", b =>
{
b.HasOne("CampusErrand.Models.Order", "Order")
.WithMany()
.HasForeignKey("OrderId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Order");
});
modelBuilder.Entity("CampusErrand.Models.Dish", b =>
{
b.HasOne("CampusErrand.Models.Shop", "Shop")
.WithMany("Dishes")
.HasForeignKey("ShopId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Shop");
});
modelBuilder.Entity("CampusErrand.Models.Earning", b =>
{
b.HasOne("CampusErrand.Models.Order", "Order")
.WithMany()
.HasForeignKey("OrderId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("CampusErrand.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Order");
b.Navigation("User");
});
modelBuilder.Entity("CampusErrand.Models.FoodOrderItem", b =>
{
b.HasOne("CampusErrand.Models.Dish", "Dish")
.WithMany()
.HasForeignKey("DishId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("CampusErrand.Models.Order", "Order")
.WithMany("FoodOrderItems")
.HasForeignKey("OrderId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("CampusErrand.Models.Shop", "Shop")
.WithMany()
.HasForeignKey("ShopId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Dish");
b.Navigation("Order");
b.Navigation("Shop");
});
modelBuilder.Entity("CampusErrand.Models.MessageRead", b =>
{
b.HasOne("CampusErrand.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("CampusErrand.Models.Order", b =>
{
b.HasOne("CampusErrand.Models.User", "Owner")
.WithMany()
.HasForeignKey("OwnerId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("CampusErrand.Models.User", "Runner")
.WithMany()
.HasForeignKey("RunnerId")
.OnDelete(DeleteBehavior.Restrict);
b.Navigation("Owner");
b.Navigation("Runner");
});
modelBuilder.Entity("CampusErrand.Models.PriceChange", b =>
{
b.HasOne("CampusErrand.Models.User", "Initiator")
.WithMany()
.HasForeignKey("InitiatorId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("CampusErrand.Models.Order", "Order")
.WithMany()
.HasForeignKey("OrderId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Initiator");
b.Navigation("Order");
});
modelBuilder.Entity("CampusErrand.Models.Review", b =>
{
b.HasOne("CampusErrand.Models.Order", "Order")
.WithMany()
.HasForeignKey("OrderId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("CampusErrand.Models.User", "Runner")
.WithMany()
.HasForeignKey("RunnerId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Order");
b.Navigation("Runner");
});
modelBuilder.Entity("CampusErrand.Models.RunnerCertification", b =>
{
b.HasOne("CampusErrand.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("CampusErrand.Models.ShopBanner", b =>
{
b.HasOne("CampusErrand.Models.Shop", "Shop")
.WithMany("ShopBanners")
.HasForeignKey("ShopId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Shop");
});
modelBuilder.Entity("CampusErrand.Models.Withdrawal", b =>
{
b.HasOne("CampusErrand.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("CampusErrand.Models.Order", b =>
{
b.Navigation("FoodOrderItems");
});
modelBuilder.Entity("CampusErrand.Models.Shop", b =>
{
b.Navigation("Dishes");
b.Navigation("ShopBanners");
});
#pragma warning restore 612, 618
}
}
}