// 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 } } }