From c8c70b220e7537a21c83c7207a7bc120799664f2 Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Thu, 6 Mar 2025 11:49:59 -0800 Subject: [PATCH] revert nullable ``ToVikingId`` --- ...1_Messaging_ToVikingIdNullable.Designer.cs | 1317 ----------------- ...0306194521_Messaging_ToVikingIdNullable.cs | 59 - src/Migrations/DBContextModelSnapshot.cs | 68 +- src/Services/MessagingService.cs | 4 +- 4 files changed, 37 insertions(+), 1411 deletions(-) delete mode 100644 src/Migrations/20250306194521_Messaging_ToVikingIdNullable.Designer.cs delete mode 100644 src/Migrations/20250306194521_Messaging_ToVikingIdNullable.cs diff --git a/src/Migrations/20250306194521_Messaging_ToVikingIdNullable.Designer.cs b/src/Migrations/20250306194521_Messaging_ToVikingIdNullable.Designer.cs deleted file mode 100644 index f2609c2..0000000 --- a/src/Migrations/20250306194521_Messaging_ToVikingIdNullable.Designer.cs +++ /dev/null @@ -1,1317 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using sodoff.Model; - -#nullable disable - -namespace sodoff.Migrations -{ - [DbContext(typeof(DBContext))] - [Migration("20250306194521_Messaging_ToVikingIdNullable")] - partial class Messaging_ToVikingIdNullable - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "7.0.20") - .HasAnnotation("Proxies:ChangeTracking", false) - .HasAnnotation("Proxies:CheckEquality", false) - .HasAnnotation("Proxies:LazyLoading", true); - - modelBuilder.Entity("GroupViking", b => - { - b.Property("GroupsId") - .HasColumnType("INTEGER"); - - b.Property("VikingsId") - .HasColumnType("INTEGER"); - - b.HasKey("GroupsId", "VikingsId"); - - b.HasIndex("VikingsId"); - - b.ToTable("GroupViking"); - }); - - modelBuilder.Entity("sodoff.Model.AchievementPoints", b => - { - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("Type") - .HasColumnType("INTEGER"); - - b.Property("Value") - .HasColumnType("INTEGER"); - - b.HasKey("VikingId", "Type"); - - b.ToTable("AchievementPoints"); - }); - - modelBuilder.Entity("sodoff.Model.AchievementTaskState", b => - { - b.Property("TaskId") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("Points") - .HasColumnType("INTEGER"); - - b.HasKey("TaskId", "VikingId"); - - b.HasIndex("VikingId"); - - b.ToTable("AchievementTaskState"); - }); - - modelBuilder.Entity("sodoff.Model.Buddy", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("BuddyStatus1") - .HasColumnType("INTEGER"); - - b.Property("BuddyStatus2") - .HasColumnType("INTEGER"); - - b.Property("BuddyVikingId") - .HasColumnType("INTEGER"); - - b.Property("CreatedAt") - .HasColumnType("TEXT"); - - b.Property("IsBestFriend1") - .HasColumnType("INTEGER"); - - b.Property("IsBestFriend2") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("BuddyVikingId"); - - b.HasIndex("VikingId"); - - b.ToTable("Buddies"); - }); - - modelBuilder.Entity("sodoff.Model.Dragon", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("EntityId") - .HasColumnType("TEXT"); - - b.Property("PetXP") - .HasColumnType("INTEGER"); - - b.Property("RaisedPetData") - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("Dragons"); - }); - - modelBuilder.Entity("sodoff.Model.GameData", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DatePlayed") - .HasColumnType("TEXT"); - - b.Property("Difficulty") - .HasColumnType("INTEGER"); - - b.Property("GameId") - .HasColumnType("INTEGER"); - - b.Property("GameLevel") - .HasColumnType("INTEGER"); - - b.Property("IsMultiplayer") - .HasColumnType("INTEGER"); - - b.Property("Loss") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("Win") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("GameData"); - }); - - modelBuilder.Entity("sodoff.Model.GameDataPair", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("GameDataId") - .HasColumnType("INTEGER"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Value") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("GameDataId"); - - b.ToTable("GameDataPairs"); - }); - - modelBuilder.Entity("sodoff.Model.Group", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("ApiKey") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Color") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("GroupID") - .HasColumnType("TEXT"); - - b.Property("Logo") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Type") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.ToTable("Groups"); - }); - - modelBuilder.Entity("sodoff.Model.Image", b => - { - b.Property("ImageType") - .HasColumnType("TEXT"); - - b.Property("ImageSlot") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("ImageData") - .HasColumnType("TEXT"); - - b.Property("TemplateName") - .HasColumnType("TEXT"); - - b.HasKey("ImageType", "ImageSlot", "VikingId"); - - b.HasIndex("VikingId"); - - b.ToTable("Images"); - }); - - modelBuilder.Entity("sodoff.Model.InventoryItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AttributesSerialized") - .HasColumnType("TEXT"); - - b.Property("ItemId") - .HasColumnType("INTEGER"); - - b.Property("Quantity") - .HasColumnType("INTEGER"); - - b.Property("StatsSerialized") - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("InventoryItems"); - }); - - modelBuilder.Entity("sodoff.Model.MMORole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Role") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("MMORoles"); - }); - - modelBuilder.Entity("sodoff.Model.Message", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("ConversationID") - .HasColumnType("INTEGER"); - - b.Property("CreatedAt") - .HasColumnType("TEXT"); - - b.Property("Data") - .HasColumnType("TEXT"); - - b.Property("IsDeleted") - .HasColumnType("INTEGER"); - - b.Property("IsNew") - .HasColumnType("INTEGER"); - - b.Property("IsPrivate") - .HasColumnType("INTEGER"); - - b.Property("LastUpdatedAt") - .HasColumnType("TEXT"); - - b.Property("MemberMessage") - .HasColumnType("TEXT"); - - b.Property("MessageLevel") - .HasColumnType("INTEGER"); - - b.Property("MessageType") - .HasColumnType("INTEGER"); - - b.Property("MessageTypeID") - .HasColumnType("INTEGER"); - - b.Property("NonMemberMessage") - .HasColumnType("TEXT"); - - b.Property("ParentMessageId") - .HasColumnType("INTEGER"); - - b.Property("QueueID") - .HasColumnType("INTEGER"); - - b.Property("ToVikingId") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("ParentMessageId"); - - b.HasIndex("ToVikingId"); - - b.HasIndex("VikingId"); - - b.ToTable("Messages"); - }); - - modelBuilder.Entity("sodoff.Model.MissionState", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("MissionId") - .HasColumnType("INTEGER"); - - b.Property("MissionStatus") - .HasColumnType("INTEGER"); - - b.Property("UserAccepted") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("MissionStates"); - }); - - modelBuilder.Entity("sodoff.Model.Neighborhood", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Slot0") - .HasColumnType("TEXT"); - - b.Property("Slot1") - .HasColumnType("TEXT"); - - b.Property("Slot2") - .HasColumnType("TEXT"); - - b.Property("Slot3") - .HasColumnType("TEXT"); - - b.Property("Slot4") - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId") - .IsUnique(); - - b.ToTable("Neighborhoods"); - }); - - modelBuilder.Entity("sodoff.Model.Pair", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Key") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("MasterId") - .HasColumnType("INTEGER"); - - b.Property("Value") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("MasterId"); - - b.ToTable("Pairs"); - }); - - modelBuilder.Entity("sodoff.Model.PairData", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("DragonId") - .HasColumnType("INTEGER"); - - b.Property("PairId") - .HasColumnType("INTEGER"); - - b.Property("UserId") - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("DragonId"); - - b.HasIndex("UserId"); - - b.HasIndex("VikingId"); - - b.ToTable("PairData"); - }); - - modelBuilder.Entity("sodoff.Model.Party", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AssetBundle") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("ExpirationDate") - .HasColumnType("TEXT"); - - b.Property("Location") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("LocationIconAsset") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("PrivateParty") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("Parties"); - }); - - modelBuilder.Entity("sodoff.Model.ProfileAnswer", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AnswerID") - .HasColumnType("INTEGER"); - - b.Property("QuestionID") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("ProfileAnswers"); - }); - - modelBuilder.Entity("sodoff.Model.Rating", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Date") - .HasColumnType("TEXT"); - - b.Property("RankId") - .HasColumnType("INTEGER"); - - b.Property("Value") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("RankId"); - - b.HasIndex("VikingId"); - - b.ToTable("Ratings"); - }); - - modelBuilder.Entity("sodoff.Model.RatingRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("CategoryID") - .HasColumnType("INTEGER"); - - b.Property("Rank") - .HasColumnType("INTEGER"); - - b.Property("RatedEntityID") - .HasColumnType("INTEGER"); - - b.Property("RatedUserID") - .HasColumnType("TEXT"); - - b.Property("RatingAverage") - .HasColumnType("REAL"); - - b.Property("UpdateDate") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("RatingRanks"); - }); - - modelBuilder.Entity("sodoff.Model.Room", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Name") - .HasColumnType("TEXT"); - - b.Property("RoomId") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("Rooms"); - }); - - modelBuilder.Entity("sodoff.Model.RoomItem", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("RoomId") - .HasColumnType("INTEGER"); - - b.Property("RoomItemData") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("RoomId"); - - b.ToTable("RoomItems"); - }); - - modelBuilder.Entity("sodoff.Model.SavedData", b => - { - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("SaveId") - .HasColumnType("INTEGER"); - - b.Property("SerializedData") - .HasColumnType("TEXT"); - - b.HasKey("VikingId", "SaveId"); - - b.ToTable("SavedData"); - }); - - modelBuilder.Entity("sodoff.Model.SceneData", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("SceneName") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("XmlData") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("SceneData"); - }); - - modelBuilder.Entity("sodoff.Model.Session", b => - { - b.Property("ApiToken") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT"); - - b.Property("CreatedAt") - .HasColumnType("TEXT"); - - b.Property("UserId") - .HasColumnType("TEXT"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("ApiToken"); - - b.HasIndex("UserId"); - - b.HasIndex("VikingId"); - - b.ToTable("Sessions"); - }); - - modelBuilder.Entity("sodoff.Model.TaskStatus", b => - { - b.Property("Id") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("MissionId") - .HasColumnType("INTEGER"); - - b.Property("Completed") - .HasColumnType("INTEGER"); - - b.Property("Payload") - .HasColumnType("TEXT"); - - b.HasKey("Id", "VikingId", "MissionId"); - - b.HasIndex("VikingId"); - - b.ToTable("TaskStatuses"); - }); - - modelBuilder.Entity("sodoff.Model.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT"); - - b.Property("Email") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Password") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Username") - .IsRequired() - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.ToTable("Users"); - }); - - modelBuilder.Entity("sodoff.Model.UserBadgeCompleteData", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("BadgeId") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("UserBadgesCompleted"); - }); - - modelBuilder.Entity("sodoff.Model.UserBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("CreatedAt") - .HasColumnType("TEXT"); - - b.Property("ExpiresOn") - .HasColumnType("TEXT"); - - b.Property("UserBanType") - .HasColumnType("INTEGER"); - - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.HasKey("Id"); - - b.HasIndex("VikingId"); - - b.ToTable("Bans"); - }); - - modelBuilder.Entity("sodoff.Model.UserMissionData", b => - { - b.Property("VikingId") - .HasColumnType("INTEGER"); - - b.Property("WorldId") - .HasColumnType("INTEGER"); - - b.Property("MissionId") - .HasColumnType("INTEGER"); - - b.Property("IsCompleted") - .HasColumnType("INTEGER"); - - b.Property("StepId") - .HasColumnType("INTEGER"); - - b.Property("TaskId") - .HasColumnType("INTEGER"); - - b.HasKey("VikingId", "WorldId", "MissionId"); - - b.ToTable("UserMissionData"); - }); - - modelBuilder.Entity("sodoff.Model.Viking", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("AvatarSerialized") - .HasColumnType("TEXT"); - - b.Property("BirthDate") - .HasColumnType("TEXT"); - - b.Property("CreationDate") - .HasColumnType("TEXT"); - - b.Property("GameVersion") - .HasColumnType("INTEGER"); - - b.Property("Gender") - .HasColumnType("INTEGER"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("SelectedDragonId") - .HasColumnType("INTEGER"); - - b.Property("Uid") - .HasColumnType("TEXT"); - - b.Property("UserId") - .HasColumnType("TEXT"); - - b.HasKey("Id"); - - b.HasIndex("SelectedDragonId") - .IsUnique(); - - b.HasIndex("Uid"); - - b.HasIndex("UserId"); - - b.ToTable("Vikings"); - }); - - modelBuilder.Entity("GroupViking", b => - { - b.HasOne("sodoff.Model.Group", null) - .WithMany() - .HasForeignKey("GroupsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("sodoff.Model.Viking", null) - .WithMany() - .HasForeignKey("VikingsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("sodoff.Model.AchievementPoints", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("AchievementPoints") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.AchievementTaskState", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("AchievementTaskStates") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Buddy", b => - { - b.HasOne("sodoff.Model.Viking", "BuddyViking") - .WithMany("BuddyList") - .HasForeignKey("BuddyVikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("BuddiesMade") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("BuddyViking"); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Dragon", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("Dragons") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.GameData", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("GameData") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.GameDataPair", b => - { - b.HasOne("sodoff.Model.GameData", "GameData") - .WithMany("GameDataPairs") - .HasForeignKey("GameDataId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("GameData"); - }); - - modelBuilder.Entity("sodoff.Model.Image", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("Images") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.InventoryItem", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("InventoryItems") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.MMORole", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("MMORoles") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Message", b => - { - b.HasOne("sodoff.Model.Message", "ParentMessage") - .WithMany("Replies") - .HasForeignKey("ParentMessageId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("sodoff.Model.Viking", "ToViking") - .WithMany("MessageBoard") - .HasForeignKey("ToVikingId"); - - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("MessagesMade") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("ParentMessage"); - - b.Navigation("ToViking"); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.MissionState", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("MissionStates") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Neighborhood", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithOne("Neighborhood") - .HasForeignKey("sodoff.Model.Neighborhood", "VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Pair", b => - { - b.HasOne("sodoff.Model.PairData", "PairData") - .WithMany("Pairs") - .HasForeignKey("MasterId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("PairData"); - }); - - modelBuilder.Entity("sodoff.Model.PairData", b => - { - b.HasOne("sodoff.Model.Dragon", "Dragon") - .WithMany("PairData") - .HasForeignKey("DragonId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("sodoff.Model.User", "User") - .WithMany("PairData") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("PairData") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade); - - b.Navigation("Dragon"); - - b.Navigation("User"); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Party", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("Parties") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.ProfileAnswer", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("ProfileAnswers") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Rating", b => - { - b.HasOne("sodoff.Model.RatingRank", "Rank") - .WithMany("Ratings") - .HasForeignKey("RankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("Ratings") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Rank"); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Room", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("Rooms") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.RoomItem", b => - { - b.HasOne("sodoff.Model.Room", "Room") - .WithMany("Items") - .HasForeignKey("RoomId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Room"); - }); - - modelBuilder.Entity("sodoff.Model.SavedData", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("SavedData") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.SceneData", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("SceneData") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Session", b => - { - b.HasOne("sodoff.Model.User", "User") - .WithMany("Sessions") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("Sessions") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade); - - b.Navigation("User"); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.TaskStatus", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("TaskStatuses") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.UserBadgeCompleteData", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("UserBadgesCompleted") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.UserBan", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("UserBans") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.UserMissionData", b => - { - b.HasOne("sodoff.Model.Viking", "Viking") - .WithMany("UserMissions") - .HasForeignKey("VikingId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Viking"); - }); - - modelBuilder.Entity("sodoff.Model.Viking", b => - { - b.HasOne("sodoff.Model.Dragon", "SelectedDragon") - .WithOne() - .HasForeignKey("sodoff.Model.Viking", "SelectedDragonId"); - - b.HasOne("sodoff.Model.User", "User") - .WithMany("Vikings") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("SelectedDragon"); - - b.Navigation("User"); - }); - - modelBuilder.Entity("sodoff.Model.Dragon", b => - { - b.Navigation("PairData"); - }); - - modelBuilder.Entity("sodoff.Model.GameData", b => - { - b.Navigation("GameDataPairs"); - }); - - modelBuilder.Entity("sodoff.Model.Message", b => - { - b.Navigation("Replies"); - }); - - modelBuilder.Entity("sodoff.Model.PairData", b => - { - b.Navigation("Pairs"); - }); - - modelBuilder.Entity("sodoff.Model.RatingRank", b => - { - b.Navigation("Ratings"); - }); - - modelBuilder.Entity("sodoff.Model.Room", b => - { - b.Navigation("Items"); - }); - - modelBuilder.Entity("sodoff.Model.User", b => - { - b.Navigation("PairData"); - - b.Navigation("Sessions"); - - b.Navigation("Vikings"); - }); - - modelBuilder.Entity("sodoff.Model.Viking", b => - { - b.Navigation("AchievementPoints"); - - b.Navigation("AchievementTaskStates"); - - b.Navigation("BuddiesMade"); - - b.Navigation("BuddyList"); - - b.Navigation("Dragons"); - - b.Navigation("GameData"); - - b.Navigation("Images"); - - b.Navigation("InventoryItems"); - - b.Navigation("MMORoles"); - - b.Navigation("MessageBoard"); - - b.Navigation("MessagesMade"); - - b.Navigation("MissionStates"); - - b.Navigation("Neighborhood"); - - b.Navigation("PairData"); - - b.Navigation("Parties"); - - b.Navigation("ProfileAnswers"); - - b.Navigation("Ratings"); - - b.Navigation("Rooms"); - - b.Navigation("SavedData"); - - b.Navigation("SceneData"); - - b.Navigation("Sessions"); - - b.Navigation("TaskStatuses"); - - b.Navigation("UserBadgesCompleted"); - - b.Navigation("UserBans"); - - b.Navigation("UserMissions"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/src/Migrations/20250306194521_Messaging_ToVikingIdNullable.cs b/src/Migrations/20250306194521_Messaging_ToVikingIdNullable.cs deleted file mode 100644 index 435caac..0000000 --- a/src/Migrations/20250306194521_Messaging_ToVikingIdNullable.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace sodoff.Migrations -{ - /// - public partial class Messaging_ToVikingIdNullable : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Messages_Vikings_ToVikingId", - table: "Messages"); - - migrationBuilder.AlterColumn( - name: "ToVikingId", - table: "Messages", - type: "INTEGER", - nullable: true, - oldClrType: typeof(int), - oldType: "INTEGER"); - - migrationBuilder.AddForeignKey( - name: "FK_Messages_Vikings_ToVikingId", - table: "Messages", - column: "ToVikingId", - principalTable: "Vikings", - principalColumn: "Id"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Messages_Vikings_ToVikingId", - table: "Messages"); - - migrationBuilder.AlterColumn( - name: "ToVikingId", - table: "Messages", - type: "INTEGER", - nullable: false, - defaultValue: 0, - oldClrType: typeof(int), - oldType: "INTEGER", - oldNullable: true); - - migrationBuilder.AddForeignKey( - name: "FK_Messages_Vikings_ToVikingId", - table: "Messages", - column: "ToVikingId", - principalTable: "Vikings", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - } -} diff --git a/src/Migrations/DBContextModelSnapshot.cs b/src/Migrations/DBContextModelSnapshot.cs index 6ded7e0..0784971 100644 --- a/src/Migrations/DBContextModelSnapshot.cs +++ b/src/Migrations/DBContextModelSnapshot.cs @@ -33,7 +33,7 @@ namespace sodoff.Migrations b.HasIndex("VikingsId"); - b.ToTable("GroupViking"); + b.ToTable("GroupViking", (string)null); }); modelBuilder.Entity("sodoff.Model.AchievementPoints", b => @@ -49,7 +49,7 @@ namespace sodoff.Migrations b.HasKey("VikingId", "Type"); - b.ToTable("AchievementPoints"); + b.ToTable("AchievementPoints", (string)null); }); modelBuilder.Entity("sodoff.Model.AchievementTaskState", b => @@ -67,7 +67,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("AchievementTaskState"); + b.ToTable("AchievementTaskState", (string)null); }); modelBuilder.Entity("sodoff.Model.Buddy", b => @@ -103,7 +103,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Buddies"); + b.ToTable("Buddies", (string)null); }); modelBuilder.Entity("sodoff.Model.Dragon", b => @@ -128,7 +128,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Dragons"); + b.ToTable("Dragons", (string)null); }); modelBuilder.Entity("sodoff.Model.GameData", b => @@ -165,7 +165,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("GameData"); + b.ToTable("GameData", (string)null); }); modelBuilder.Entity("sodoff.Model.GameDataPair", b => @@ -188,7 +188,7 @@ namespace sodoff.Migrations b.HasIndex("GameDataId"); - b.ToTable("GameDataPairs"); + b.ToTable("GameDataPairs", (string)null); }); modelBuilder.Entity("sodoff.Model.Group", b => @@ -221,7 +221,7 @@ namespace sodoff.Migrations b.HasKey("Id"); - b.ToTable("Groups"); + b.ToTable("Groups", (string)null); }); modelBuilder.Entity("sodoff.Model.Image", b => @@ -245,7 +245,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Images"); + b.ToTable("Images", (string)null); }); modelBuilder.Entity("sodoff.Model.InventoryItem", b => @@ -273,7 +273,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("InventoryItems"); + b.ToTable("InventoryItems", (string)null); }); modelBuilder.Entity("sodoff.Model.MMORole", b => @@ -292,7 +292,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("MMORoles"); + b.ToTable("MMORoles", (string)null); }); modelBuilder.Entity("sodoff.Model.Message", b => @@ -343,7 +343,7 @@ namespace sodoff.Migrations b.Property("QueueID") .HasColumnType("INTEGER"); - b.Property("ToVikingId") + b.Property("ToVikingId") .HasColumnType("INTEGER"); b.Property("VikingId") @@ -357,7 +357,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Messages"); + b.ToTable("Messages", (string)null); }); modelBuilder.Entity("sodoff.Model.MissionState", b => @@ -382,7 +382,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("MissionStates"); + b.ToTable("MissionStates", (string)null); }); modelBuilder.Entity("sodoff.Model.Neighborhood", b => @@ -414,7 +414,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId") .IsUnique(); - b.ToTable("Neighborhoods"); + b.ToTable("Neighborhoods", (string)null); }); modelBuilder.Entity("sodoff.Model.Pair", b => @@ -438,7 +438,7 @@ namespace sodoff.Migrations b.HasIndex("MasterId"); - b.ToTable("Pairs"); + b.ToTable("Pairs", (string)null); }); modelBuilder.Entity("sodoff.Model.PairData", b => @@ -467,7 +467,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("PairData"); + b.ToTable("PairData", (string)null); }); modelBuilder.Entity("sodoff.Model.Party", b => @@ -501,7 +501,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Parties"); + b.ToTable("Parties", (string)null); }); modelBuilder.Entity("sodoff.Model.ProfileAnswer", b => @@ -523,7 +523,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("ProfileAnswers"); + b.ToTable("ProfileAnswers", (string)null); }); modelBuilder.Entity("sodoff.Model.Rating", b => @@ -550,7 +550,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Ratings"); + b.ToTable("Ratings", (string)null); }); modelBuilder.Entity("sodoff.Model.RatingRank", b => @@ -579,7 +579,7 @@ namespace sodoff.Migrations b.HasKey("Id"); - b.ToTable("RatingRanks"); + b.ToTable("RatingRanks", (string)null); }); modelBuilder.Entity("sodoff.Model.Room", b => @@ -602,7 +602,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Rooms"); + b.ToTable("Rooms", (string)null); }); modelBuilder.Entity("sodoff.Model.RoomItem", b => @@ -622,7 +622,7 @@ namespace sodoff.Migrations b.HasIndex("RoomId"); - b.ToTable("RoomItems"); + b.ToTable("RoomItems", (string)null); }); modelBuilder.Entity("sodoff.Model.SavedData", b => @@ -638,7 +638,7 @@ namespace sodoff.Migrations b.HasKey("VikingId", "SaveId"); - b.ToTable("SavedData"); + b.ToTable("SavedData", (string)null); }); modelBuilder.Entity("sodoff.Model.SceneData", b => @@ -662,7 +662,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("SceneData"); + b.ToTable("SceneData", (string)null); }); modelBuilder.Entity("sodoff.Model.Session", b => @@ -686,7 +686,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Sessions"); + b.ToTable("Sessions", (string)null); }); modelBuilder.Entity("sodoff.Model.TaskStatus", b => @@ -710,7 +710,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("TaskStatuses"); + b.ToTable("TaskStatuses", (string)null); }); modelBuilder.Entity("sodoff.Model.User", b => @@ -733,7 +733,7 @@ namespace sodoff.Migrations b.HasKey("Id"); - b.ToTable("Users"); + b.ToTable("Users", (string)null); }); modelBuilder.Entity("sodoff.Model.UserBadgeCompleteData", b => @@ -752,7 +752,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("UserBadgesCompleted"); + b.ToTable("UserBadgesCompleted", (string)null); }); modelBuilder.Entity("sodoff.Model.UserBan", b => @@ -777,7 +777,7 @@ namespace sodoff.Migrations b.HasIndex("VikingId"); - b.ToTable("Bans"); + b.ToTable("Bans", (string)null); }); modelBuilder.Entity("sodoff.Model.UserMissionData", b => @@ -802,7 +802,7 @@ namespace sodoff.Migrations b.HasKey("VikingId", "WorldId", "MissionId"); - b.ToTable("UserMissionData"); + b.ToTable("UserMissionData", (string)null); }); modelBuilder.Entity("sodoff.Model.Viking", b => @@ -848,7 +848,7 @@ namespace sodoff.Migrations b.HasIndex("UserId"); - b.ToTable("Vikings"); + b.ToTable("Vikings", (string)null); }); modelBuilder.Entity("GroupViking", b => @@ -982,7 +982,9 @@ namespace sodoff.Migrations b.HasOne("sodoff.Model.Viking", "ToViking") .WithMany("MessageBoard") - .HasForeignKey("ToVikingId"); + .HasForeignKey("ToVikingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.HasOne("sodoff.Model.Viking", "Viking") .WithMany("MessagesMade") diff --git a/src/Services/MessagingService.cs b/src/Services/MessagingService.cs index 1c05ba2..50976a3 100644 --- a/src/Services/MessagingService.cs +++ b/src/Services/MessagingService.cs @@ -16,14 +16,14 @@ public class MessagingService this.ctx = ctx; } - public Model.Message AddMessageToViking(Viking viking, Viking toViking, MessageType messageType, MessageTypeID messageTypeID, MessageLevel messageLevel, string data, string memberMessage = "", string nonMemberMessage = "", bool IsNew = true, bool IsDeleted = false, bool isReply = false, bool isPrivate = false, int parentMessageId = 0) + public Model.Message AddMessageToViking(Viking viking, Viking? toViking, MessageType messageType, MessageTypeID messageTypeID, MessageLevel messageLevel, string data, string memberMessage = "", string nonMemberMessage = "", bool IsNew = true, bool IsDeleted = false, bool isReply = false, bool isPrivate = false, int parentMessageId = 0) { // get execution UTC timestamp DateTime now = DateTime.UtcNow; // for generating ConversationId and QueueId Random rnd = new Random(); - + // construct message Model.Message message = new Model.Message {