diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 896e0394..00c8b8f3 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -8,13 +8,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: submodules: recursive - name: Setup .NET Core - uses: actions/setup-dotnet@v1 + uses: actions/setup-dotnet@v4 with: - dotnet-version: 6.0.* + dotnet-version: 8.0.* - name: Install dependencies run: dotnet restore - uses: shogo82148/actions-setup-mysql@v1 diff --git a/.github/workflows/push_docker_image.yml b/.github/workflows/push_docker_image.yml index 9ddaf73e..28a5708c 100644 --- a/.github/workflows/push_docker_image.yml +++ b/.github/workflows/push_docker_image.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: submodules: recursive - name: login diff --git a/Dockerfile b/Dockerfile index 30ab02dd..796a03fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env WORKDIR /app ARG COMMIT @@ -35,7 +35,7 @@ RUN dotnet publish NineChronicles.Headless/NineChronicles.Headless.Executable/Ni --version-suffix $COMMIT # Build runtime image -FROM mcr.microsoft.com/dotnet/sdk:6.0 +FROM mcr.microsoft.com/dotnet/sdk:8.0 WORKDIR /app RUN dotnet tool install --global dotnet-ef --version 7.0.14 ENV PATH="${PATH}:/${HOME}/.dotnet/tools" diff --git a/Dockerfile.amd64 b/Dockerfile.amd64 index 5adbd213..b7cd4fbb 100644 --- a/Dockerfile.amd64 +++ b/Dockerfile.amd64 @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env WORKDIR /app ARG COMMIT @@ -35,7 +35,7 @@ RUN dotnet publish NineChronicles.Headless/NineChronicles.Headless.Executable/Ni --version-suffix $COMMIT # Build runtime image -FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim +FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim WORKDIR /app RUN dotnet tool install --global dotnet-ef --version 7.0.14 ENV PATH="${PATH}:/${HOME}/.dotnet/tools" diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 index de966e82..e9c09022 100644 --- a/Dockerfile.arm64v8 +++ b/Dockerfile.arm64v8 @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env WORKDIR /app ARG COMMIT @@ -35,7 +35,7 @@ RUN dotnet publish NineChronicles.Headless/NineChronicles.Headless.Executable/Ni --version-suffix $COMMIT # Build runtime image -FROM --platform=linux/arm64 mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim-arm64v8 +FROM --platform=linux/arm64 mcr.microsoft.com/dotnet/sdk:8.0-bookworm-slim-arm64v8 WORKDIR /app RUN dotnet tool install --global dotnet-ef --version 7.0.14 ENV PATH="${PATH}:/${HOME}/.dotnet/tools" diff --git a/NineChronicles.DataProvider.Executable/Commands/MySqlMigration.cs b/NineChronicles.DataProvider.Executable/Commands/MySqlMigration.cs index 4033f96a..9e1ad8ee 100644 --- a/NineChronicles.DataProvider.Executable/Commands/MySqlMigration.cs +++ b/NineChronicles.DataProvider.Executable/Commands/MySqlMigration.cs @@ -1,7 +1,11 @@ using Nekoyume.Action.AdventureBoss; using Nekoyume.Model.EnumType; using NineChronicles.DataProvider.DataRendering.AdventureBoss; +using NineChronicles.DataProvider.DataRendering.Crafting; +using NineChronicles.DataProvider.DataRendering.Grinding; using NineChronicles.DataProvider.Store.Models.AdventureBoss; +using NineChronicles.DataProvider.Store.Models.Crafting; +using NineChronicles.DataProvider.Store.Models.Grinding; namespace NineChronicles.DataProvider.Executable.Commands { @@ -41,7 +45,6 @@ namespace NineChronicles.DataProvider.Executable.Commands using NineChronicles.DataProvider.DataRendering; using NineChronicles.DataProvider.Store; using NineChronicles.DataProvider.Store.Models; - using Serilog; using static Lib9c.SerializeKeys; public class MySqlMigration @@ -363,7 +366,6 @@ public async Task Migration( _mySqlStore.StoreStakingList(_stakeList); _mySqlStore.StoreClaimStakeRewardList(_claimStakeList); _mySqlStore.StoreMigrateMonsterCollectionList(_migrateMonsterCollectionList); - _mySqlStore.StoreGrindList(_grindList); _mySqlStore.StoreItemEnhancementFailList(_itemEnhancementFailList); _mySqlStore.StoreUnlockEquipmentRecipeList(_unlockEquipmentRecipeList); _mySqlStore.StoreUnlockWorldList(_unlockWorldList); @@ -381,7 +383,6 @@ public async Task Migration( _mySqlStore.StoreRuneEnhancementList(_runeEnhancementList); _mySqlStore.StoreRunesAcquiredList(_runesAcquiredList); _mySqlStore.StoreUnlockRuneSlotList(_unlockRuneSlotList); - _mySqlStore.StoreRapidCombinationList(_rapidCombinationList); _mySqlStore.StorePetEnhancementList(_petEnhancementList); _mySqlStore.StoreTransferAssetList(_transferAssetList); _mySqlStore.StoreRequestPledgeList(_requestPledgeList); @@ -420,6 +421,18 @@ await Task.Run(async () => Console.WriteLine($"[Adventure Boss] {_adventureBossClaimRewardList.Count} claim"); await _mySqlStore.StoreAdventureBossClaimRewardList(_adventureBossClaimRewardList); }); + + await Task.Run(async () => + { + Console.WriteLine($"[RapidCombination] {_rapidCombinationList.Count}"); + await _mySqlStore.StoreRapidCombinationList(_rapidCombinationList); + }); + + await Task.Run(async () => + { + Console.WriteLine($"[Grinding] {_grindList.Count} grinding"); + await _mySqlStore.StoreGrindList(_grindList); + }); } catch (Exception e) { @@ -598,9 +611,8 @@ private void ProcessTasks(Task>[] taskArray, IB (end - start).Milliseconds); start = DateTimeOffset.UtcNow; - var slotState = outputState.GetCombinationSlotState( - combinationEquipment.avatarAddress, - combinationEquipment.slotIndex); + var slotState = outputState.GetAllCombinationSlotState(combinationEquipment.avatarAddress) + .GetSlot(combinationEquipment.slotIndex); int optionCount = 0; bool skillContains = false; @@ -672,9 +684,8 @@ private void ProcessTasks(Task>[] taskArray, IB Console.WriteLine("Writing ItemEnhancement action in block #{0}. Time Taken: {1} ms.", ae.InputContext.BlockIndex, (end - start).Milliseconds); start = DateTimeOffset.UtcNow; - var slotState = outputState.GetCombinationSlotState( - itemEnhancement.avatarAddress, - itemEnhancement.slotIndex); + var slotState = outputState.GetAllCombinationSlotState(itemEnhancement.avatarAddress) + .GetSlot(itemEnhancement.slotIndex); if (slotState?.Result.itemUsable.ItemType is ItemType.Equipment) { @@ -804,14 +815,6 @@ private void ProcessTasks(Task>[] taskArray, IB Console.WriteLine("Writing Stake action in block #{0}. Time Taken: {1} ms.", ae.InputContext.BlockIndex, (end - start).Milliseconds); } - if (action is Stake0 stake0) - { - var start = DateTimeOffset.UtcNow; - _stakeList.Add(StakeData.GetStakeInfo(inputState, outputState, ae.InputContext.Signer, ae.InputContext.BlockIndex, _blockTimeOffset, Guid.Empty)); - var end = DateTimeOffset.UtcNow; - Console.WriteLine("Writing Stake action in block #{0}. Time Taken: {1} ms.", ae.InputContext.BlockIndex, (end - start).Milliseconds); - } - if (action is MigrateMonsterCollection migrateMonsterCollection) { var start = DateTimeOffset.UtcNow; @@ -824,7 +827,7 @@ private void ProcessTasks(Task>[] taskArray, IB { var start = DateTimeOffset.UtcNow; - var grindList = GrindingData.GetGrindingInfo(inputState, outputState, ae.InputContext.Signer, grinding.AvatarAddress, grinding.EquipmentIds, grinding.Id, ae.InputContext.BlockIndex, _blockTimeOffset); + var grindList = GrindingData.GetGrindingInfo(inputState, ae.InputContext.Signer, grinding.AvatarAddress, grinding.EquipmentIds, grinding.Id, ae.InputContext.BlockIndex, _blockTimeOffset); foreach (var grind in grindList) { @@ -1058,15 +1061,16 @@ private void ProcessTasks(Task>[] taskArray, IB if (action is RapidCombination rapidCombination) { var start = DateTimeOffset.UtcNow; - _rapidCombinationList.Add(RapidCombinationData.GetRapidCombinationInfo( + _rapidCombinationList = _rapidCombinationList.Concat( + RapidCombinationData.GetRapidCombinationInfo( inputState, - outputState, ae.InputContext.Signer, rapidCombination.avatarAddress, - rapidCombination.slotIndex, + rapidCombination.slotIndexList, rapidCombination.Id, ae.InputContext.BlockIndex, - _blockTimeOffset)); + _blockTimeOffset) + ).ToList(); var end = DateTimeOffset.UtcNow; Console.WriteLine("Writing RapidCombination action in block #{0}. Time Taken: {1} ms.", ae.InputContext.BlockIndex, (end - start).Milliseconds); } @@ -1163,27 +1167,6 @@ private void ProcessTasks(Task>[] taskArray, IB Console.WriteLine("Stored TransferAsset action in block #{0}. Time Taken: {1} ms.", ae.InputContext.BlockIndex, (end - start).Milliseconds); } - if (action is TransferAsset0 transferAsset0) - { - var start = DateTimeOffset.UtcNow; - var actionString = ae.InputContext.TxId.ToString(); - var actionByteArray = Encoding.UTF8.GetBytes(actionString!).Take(16).ToArray(); - var id = new Guid(actionByteArray); - _transferAssetList.Add(TransferAssetData.GetTransferAssetInfo( - id, - (TxId)ae.InputContext.TxId!, - ae.InputContext.BlockIndex, - _blockHash!.ToString(), - transferAsset0.Sender, - transferAsset0.Recipient, - transferAsset0.Amount.Currency.Ticker, - transferAsset0.Amount, - _blockTimeOffset)); - - var end = DateTimeOffset.UtcNow; - Console.WriteLine("Stored TransferAsset action in block #{0}. Time Taken: {1} ms.", ae.InputContext.BlockIndex, (end - start).Milliseconds); - } - if (action is RequestPledge requestPledge) { var start = DateTimeOffset.UtcNow; diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240807132232_AddCustomEquipmentCraft.Designer.cs b/NineChronicles.DataProvider.Executable/Migrations/20240807132232_AddCustomEquipmentCraft.Designer.cs new file mode 100644 index 00000000..bd02eeab --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240807132232_AddCustomEquipmentCraft.Designer.cs @@ -0,0 +1,4327 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using NineChronicles.DataProvider.Store; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + [DbContext(typeof(NineChroniclesContext))] + [Migration("20240807132232_AddCustomEquipmentCraft")] + partial class AddCustomEquipmentCraft + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AbilityRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("AbilityRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ActionId") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CollectionId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress", "CollectionId") + .IsUnique(); + + b.ToTable("ActivateCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("StartFloor") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossChallenge"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimedSeason") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NcgReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RewardData") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossClaimReward"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossRush"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.Property("Season") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BossId") + .HasColumnType("int"); + + b.Property("ClaimableBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("FixedRewardData") + .HasColumnType("longtext"); + + b.Property("NextSeasonBlockIndex") + .HasColumnType("bigint"); + + b.Property("RaffleReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RaffleWinnerAddress") + .HasColumnType("varchar(255)"); + + b.Property("RandomRewardData") + .HasColumnType("longtext"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Season"); + + b.HasIndex("RaffleWinnerAddress"); + + b.ToTable("AdventureBossSeason"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalUsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("TotalUsedNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("UnlockFloor") + .HasColumnType("int"); + + b.Property("UsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("UsedNcg") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossUnlockFloor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Bounty") + .HasColumnType("decimal(65,30)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalBounty") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossWanted"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AgentModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.HasKey("Address"); + + b.ToTable("Agents"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ApprovePledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PatronAddress") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("ApprovePledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.HasKey("Address"); + + b.HasIndex("AgentAddress"); + + b.ToTable("Avatars"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EnemyAvatarAddress") + .HasColumnType("longtext"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("TicketCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaRankingModel", b => + { + b.Property("AdditionalTicketPrice") + .HasColumnType("bigint"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArenaType") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("EntranceFee") + .HasColumnType("bigint"); + + b.Property("LossCount") + .HasColumnType("int"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("PurchasedTicketCount") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("RequiredMedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("Score") + .HasColumnType("int"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Ticket") + .HasColumnType("int"); + + b.Property("TicketPrice") + .HasColumnType("bigint"); + + b.Property("TicketResetCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.Property("WinCount") + .HasColumnType("int"); + + b.ToTable("BattleArenaRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EnemyAvatarAddress") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("GrandFinaleId") + .HasColumnType("int"); + + b.Property("GrandFinaleScore") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleGrandFinales"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BlockModel", b => + { + b.Property("Hash") + .HasColumnType("varchar(255)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Difficulty") + .HasColumnType("bigint"); + + b.Property("Index") + .HasColumnType("bigint"); + + b.Property("Miner") + .HasColumnType("longtext"); + + b.Property("Nonce") + .HasColumnType("longtext"); + + b.Property("PreviousHash") + .HasColumnType("longtext"); + + b.Property("ProtocolVersion") + .HasColumnType("int"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("StateRootHash") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalDifficulty") + .HasColumnType("bigint"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.Property("TxHash") + .HasColumnType("longtext"); + + b.HasKey("Hash"); + + b.HasIndex("Date"); + + b.HasIndex("Index"); + + b.ToTable("Blocks"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApPotionCount") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimRewardAvatarAddress") + .HasColumnType("longtext"); + + b.Property("ClaimStakeEndBlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourGlassCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("ClaimStakeRewards"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OptionCount") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SkillContains") + .HasColumnType("tinyint(1)"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("SubRecipeId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CraftRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CraftCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("CraftRankings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CustomCraft.CustomEquipmentCraftCountModel", b => + { + b.Property("IconId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.HasKey("IconId"); + + b.ToTable("CustomEquipmentCraftCount"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CustomCraft.CustomEquipmentCraftModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AdditionalCost") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("DrawingAmount") + .HasColumnType("int"); + + b.Property("DrawingToolAmount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("EquipmentItemId") + .HasColumnType("int"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("NcgCost") + .HasColumnType("decimal(65,30)"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("CustomEquipmentCraft"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.DailyMetricModel", b => + { + b.Property("Date") + .HasColumnType("date"); + + b.Property("ApUsage") + .HasColumnType("int"); + + b.Property("ArenaNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("AuraSummonCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableUsers") + .HasColumnType("int"); + + b.Property("CraftingEquipmentCount") + .HasColumnType("int"); + + b.Property("CraftingEquipmentUsers") + .HasColumnType("int"); + + b.Property("DailyNew") + .HasColumnType("int"); + + b.Property("Dau") + .HasColumnType("int"); + + b.Property("EnhanceCount") + .HasColumnType("int"); + + b.Property("EnhanceNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("EnhanceUsers") + .HasColumnType("int"); + + b.Property("EventTicketNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("HackAndSlashCount") + .HasColumnType("int"); + + b.Property("HackAndSlashUsers") + .HasColumnType("int"); + + b.Property("HourglassUsage") + .HasColumnType("int"); + + b.Property("NcgTrade") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSlotNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSummonCount") + .HasColumnType("int"); + + b.Property("SweepCount") + .HasColumnType("int"); + + b.Property("SweepUsers") + .HasColumnType("int"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.HasKey("Date"); + + b.HasIndex("Date"); + + b.ToTable("DailyMetrics"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("ItemId"); + + b.ToTable("Equipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingArmorModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingArmor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingBeltModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingBelt"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingNecklaceModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingNecklace"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingRingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingRing"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingWeaponModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingWeapon"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EventConsumableItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("RequiredItem1Count") + .HasColumnType("int"); + + b.Property("RequiredItem1Id") + .HasColumnType("int"); + + b.Property("RequiredItem2Count") + .HasColumnType("int"); + + b.Property("RequiredItem2Id") + .HasColumnType("int"); + + b.Property("RequiredItem3Count") + .HasColumnType("int"); + + b.Property("RequiredItem3Id") + .HasColumnType("int"); + + b.Property("RequiredItem4Count") + .HasColumnType("int"); + + b.Property("RequiredItem4Id") + .HasColumnType("int"); + + b.Property("RequiredItem5Count") + .HasColumnType("int"); + + b.Property("RequiredItem5Id") + .HasColumnType("int"); + + b.Property("RequiredItem6Count") + .HasColumnType("int"); + + b.Property("RequiredItem6Id") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventConsumableItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("EventDungeonId") + .HasColumnType("int"); + + b.Property("EventDungeonStageId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("FoodsCount") + .HasColumnType("int"); + + b.Property("RemainingTickets") + .HasColumnType("int"); + + b.Property("RewardItem10Count") + .HasColumnType("int"); + + b.Property("RewardItem10Id") + .HasColumnType("int"); + + b.Property("RewardItem1Count") + .HasColumnType("int"); + + b.Property("RewardItem1Id") + .HasColumnType("int"); + + b.Property("RewardItem2Count") + .HasColumnType("int"); + + b.Property("RewardItem2Id") + .HasColumnType("int"); + + b.Property("RewardItem3Count") + .HasColumnType("int"); + + b.Property("RewardItem3Id") + .HasColumnType("int"); + + b.Property("RewardItem4Count") + .HasColumnType("int"); + + b.Property("RewardItem4Id") + .HasColumnType("int"); + + b.Property("RewardItem5Count") + .HasColumnType("int"); + + b.Property("RewardItem5Id") + .HasColumnType("int"); + + b.Property("RewardItem6Count") + .HasColumnType("int"); + + b.Property("RewardItem6Id") + .HasColumnType("int"); + + b.Property("RewardItem7Count") + .HasColumnType("int"); + + b.Property("RewardItem7Id") + .HasColumnType("int"); + + b.Property("RewardItem8Count") + .HasColumnType("int"); + + b.Property("RewardItem8Id") + .HasColumnType("int"); + + b.Property("RewardItem9Count") + .HasColumnType("int"); + + b.Property("RewardItem9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventDungeonBattles"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EventMaterialItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("Material10Count") + .HasColumnType("int"); + + b.Property("Material10Id") + .HasColumnType("int"); + + b.Property("Material11Count") + .HasColumnType("int"); + + b.Property("Material11Id") + .HasColumnType("int"); + + b.Property("Material12Count") + .HasColumnType("int"); + + b.Property("Material12Id") + .HasColumnType("int"); + + b.Property("Material1Count") + .HasColumnType("int"); + + b.Property("Material1Id") + .HasColumnType("int"); + + b.Property("Material2Count") + .HasColumnType("int"); + + b.Property("Material2Id") + .HasColumnType("int"); + + b.Property("Material3Count") + .HasColumnType("int"); + + b.Property("Material3Id") + .HasColumnType("int"); + + b.Property("Material4Count") + .HasColumnType("int"); + + b.Property("Material4Id") + .HasColumnType("int"); + + b.Property("Material5Count") + .HasColumnType("int"); + + b.Property("Material5Id") + .HasColumnType("int"); + + b.Property("Material6Count") + .HasColumnType("int"); + + b.Property("Material6Id") + .HasColumnType("int"); + + b.Property("Material7Count") + .HasColumnType("int"); + + b.Property("Material7Id") + .HasColumnType("int"); + + b.Property("Material8Count") + .HasColumnType("int"); + + b.Property("Material8Id") + .HasColumnType("int"); + + b.Property("Material9Count") + .HasColumnType("int"); + + b.Property("Material9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventMaterialItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.GrindingModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Crystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("Grindings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionPoint") + .HasColumnType("int"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApStoneCount") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("WorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashSweeps"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GachaCount") + .HasColumnType("int"); + + b.Property("HasStageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffId") + .HasColumnType("int"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasWithRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("GainedCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("MaterialItemId") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("ItemEnhancementFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exp") + .HasColumnType("bigint"); + + b.Property("HammerCount") + .HasColumnType("int"); + + b.Property("HammerExp") + .HasColumnType("bigint"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MaterialId") + .HasColumnType("longtext"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("SheetId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ItemEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArenaRound") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("JoinArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MigrationAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("MigrationStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("MigrateMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntSoulStone") + .HasColumnType("decimal(65,30)"); + + b.Property("ChangedLevel") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputPetLevel") + .HasColumnType("int"); + + b.Property("PetId") + .HasColumnType("int"); + + b.Property("PreviousPetLevel") + .HasColumnType("int"); + + b.Property("TargetLevel") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("PetEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RaiderModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Address") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.Property("HighScore") + .HasColumnType("bigint"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("PurchaseCount") + .HasColumnType("int"); + + b.Property("RaidId") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("bigint"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("RaidId", "Address") + .IsUnique(); + + b.ToTable("Raiders"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RapidCombinationModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourglassCount") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RapidCombinations"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ReplacedMaterialCount") + .HasColumnType("int"); + + b.Property("ReplacedMaterialId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ReplaceCombinationEquipmentMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RequestPledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PledgeAgentAddress") + .HasColumnType("longtext"); + + b.Property("RefillMead") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxSigner") + .HasColumnType("longtext"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("RequestPledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntRune") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputRuneLevel") + .HasColumnType("int"); + + b.Property("OutputRuneLevelBonus") + .HasColumnType("int"); + + b.Property("PreviousRuneLevel") + .HasColumnType("int"); + + b.Property("PreviousRuneLevelBonus") + .HasColumnType("int"); + + b.Property("RuneId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TryCount") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("TickerType") + .HasColumnType("varchar(255)"); + + b.Property("AcquiredRune") + .HasColumnType("decimal(65,30)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id", "ActionType", "TickerType"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.HasIndex("Id", "ActionType", "TickerType") + .IsUnique(); + + b.ToTable("RunesAcquired"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopConsumableModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopCostumeModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopEquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryConsumableModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryCostumeModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryEquipmentModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryFungibleAssetValueModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("Quantity") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryFungibleAssetValues"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryMaterialModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopMaterialModel", b => + { + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.ToTable("ShopMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StageRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClearedStageId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("StageRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NewAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("NewStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PrevStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PreviousAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("RemainingNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("Stakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransactionModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("Nonce") + .HasColumnType("bigint"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedAddressesCount") + .HasColumnType("int"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.HasIndex(new[] { "Date", "ActionType" }, "IDX_Date_ActionType"); + + b.ToTable("Transactions"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransferAssetModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("Amount") + .HasColumnType("decimal(65,30)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Recipient") + .HasColumnType("longtext"); + + b.Property("Sender") + .HasColumnType("longtext"); + + b.Property("TickerType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("Date"); + + b.ToTable("TransferAssets"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockEquipmentRecipeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockEquipmentRecipes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCRYSTAL") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockRuneSlots"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockWorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockWorlds"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CrystalBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserCrystals"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserEquipmentsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.ToTable("UserEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MonsterCollectionAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("RewardLevel") + .HasColumnType("bigint"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("NCGBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserNCGs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("RuneBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserRunes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CancellableBlockIndex") + .HasColumnType("bigint"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserStakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossRankingModel", b => + { + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("AvatarName") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("HighScore") + .HasColumnType("int"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("int"); + + b.ToTable("WorldBossRankings", null, t => t.ExcludeFromMigrations()); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossSeasonMigrationModel", b => + { + b.Property("RaidId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("MigratedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("RaidId"); + + b.HasIndex("RaidId") + .IsUnique(); + + b.ToTable("WorldBossSeasonMigrationModels"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany("ActivateCollections") + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("NineChronicles.DataProvider.Store.Models.CollectionOptionModel", "Options", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b1.Property("ActivateCollectionId") + .HasColumnType("int"); + + b1.Property("OperationType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("StatType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("Value") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ActivateCollectionId"); + + b1.ToTable("CollectionOptionModel"); + + b1.WithOwner() + .HasForeignKey("ActivateCollectionId"); + }); + + b.Navigation("Avatar"); + + b.Navigation("Options"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "RaffleWinner") + .WithMany() + .HasForeignKey("RaffleWinnerAddress"); + + b.Navigation("RaffleWinner"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CustomCraft.CustomEquipmentCraftModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.GrindingModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RapidCombinationModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Navigation("ActivateCollections"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240807132232_AddCustomEquipmentCraft.cs b/NineChronicles.DataProvider.Executable/Migrations/20240807132232_AddCustomEquipmentCraft.cs new file mode 100644 index 00000000..93886e90 --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240807132232_AddCustomEquipmentCraft.cs @@ -0,0 +1,80 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + public partial class AddCustomEquipmentCraft : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "CustomEquipmentCraft", + columns: table => new + { + Id = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + BlockIndex = table.Column(type: "bigint", nullable: false), + AvatarAddress = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + EquipmentItemId = table.Column(type: "int", nullable: false), + RecipeId = table.Column(type: "int", nullable: false), + SlotIndex = table.Column(type: "int", nullable: false), + ItemSubType = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + IconId = table.Column(type: "int", nullable: false), + ElementalType = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + DrawingAmount = table.Column(type: "int", nullable: false), + DrawingToolAmount = table.Column(type: "int", nullable: false), + NcgCost = table.Column(type: "decimal(65,30)", nullable: false), + AdditionalCost = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Date = table.Column(type: "date", nullable: false), + TimeStamp = table.Column(type: "datetime(6)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomEquipmentCraft", x => x.Id); + table.ForeignKey( + name: "FK_CustomEquipmentCraft_Avatars_AvatarAddress", + column: x => x.AvatarAddress, + principalTable: "Avatars", + principalColumn: "Address"); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "CustomEquipmentCraftCount", + columns: table => new + { + IconId = table.Column(type: "int", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemSubType = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Count = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CustomEquipmentCraftCount", x => x.IconId); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_CustomEquipmentCraft_AvatarAddress", + table: "CustomEquipmentCraft", + column: "AvatarAddress"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "CustomEquipmentCraft"); + + migrationBuilder.DropTable( + name: "CustomEquipmentCraftCount"); + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240911092734_UpdateGrinding.Designer.cs b/NineChronicles.DataProvider.Executable/Migrations/20240911092734_UpdateGrinding.Designer.cs new file mode 100644 index 00000000..0f7fa859 --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240911092734_UpdateGrinding.Designer.cs @@ -0,0 +1,4250 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using NineChronicles.DataProvider.Store; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + [DbContext(typeof(NineChroniclesContext))] + [Migration("20240911092734_UpdateGrinding")] + partial class UpdateGrinding + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AbilityRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("AbilityRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ActionId") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CollectionId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress", "CollectionId") + .IsUnique(); + + b.ToTable("ActivateCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("StartFloor") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossChallenge"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimedSeason") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NcgReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RewardData") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossClaimReward"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossRush"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.Property("Season") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BossId") + .HasColumnType("int"); + + b.Property("ClaimableBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("FixedRewardData") + .HasColumnType("longtext"); + + b.Property("NextSeasonBlockIndex") + .HasColumnType("bigint"); + + b.Property("RaffleReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RaffleWinnerAddress") + .HasColumnType("varchar(255)"); + + b.Property("RandomRewardData") + .HasColumnType("longtext"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Season"); + + b.HasIndex("RaffleWinnerAddress"); + + b.ToTable("AdventureBossSeason"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalUsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("TotalUsedNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("UnlockFloor") + .HasColumnType("int"); + + b.Property("UsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("UsedNcg") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossUnlockFloor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Bounty") + .HasColumnType("decimal(65,30)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalBounty") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossWanted"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AgentModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.HasKey("Address"); + + b.ToTable("Agents"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ApprovePledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PatronAddress") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("ApprovePledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.HasKey("Address"); + + b.HasIndex("AgentAddress"); + + b.ToTable("Avatars"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EnemyAvatarAddress") + .HasColumnType("longtext"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("TicketCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaRankingModel", b => + { + b.Property("AdditionalTicketPrice") + .HasColumnType("bigint"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArenaType") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("EntranceFee") + .HasColumnType("bigint"); + + b.Property("LossCount") + .HasColumnType("int"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("PurchasedTicketCount") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("RequiredMedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("Score") + .HasColumnType("int"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Ticket") + .HasColumnType("int"); + + b.Property("TicketPrice") + .HasColumnType("bigint"); + + b.Property("TicketResetCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.Property("WinCount") + .HasColumnType("int"); + + b.ToTable("BattleArenaRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EnemyAvatarAddress") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("GrandFinaleId") + .HasColumnType("int"); + + b.Property("GrandFinaleScore") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleGrandFinales"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BlockModel", b => + { + b.Property("Hash") + .HasColumnType("varchar(255)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Difficulty") + .HasColumnType("bigint"); + + b.Property("Index") + .HasColumnType("bigint"); + + b.Property("Miner") + .HasColumnType("longtext"); + + b.Property("Nonce") + .HasColumnType("longtext"); + + b.Property("PreviousHash") + .HasColumnType("longtext"); + + b.Property("ProtocolVersion") + .HasColumnType("int"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("StateRootHash") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalDifficulty") + .HasColumnType("bigint"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.Property("TxHash") + .HasColumnType("longtext"); + + b.HasKey("Hash"); + + b.HasIndex("Date"); + + b.HasIndex("Index"); + + b.ToTable("Blocks"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApPotionCount") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimRewardAvatarAddress") + .HasColumnType("longtext"); + + b.Property("ClaimStakeEndBlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourGlassCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("ClaimStakeRewards"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OptionCount") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SkillContains") + .HasColumnType("tinyint(1)"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("SubRecipeId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourglassCount") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RapidCombinations"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CraftRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CraftCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("CraftRankings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.DailyMetricModel", b => + { + b.Property("Date") + .HasColumnType("date"); + + b.Property("ApUsage") + .HasColumnType("int"); + + b.Property("ArenaNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("AuraSummonCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableUsers") + .HasColumnType("int"); + + b.Property("CraftingEquipmentCount") + .HasColumnType("int"); + + b.Property("CraftingEquipmentUsers") + .HasColumnType("int"); + + b.Property("DailyNew") + .HasColumnType("int"); + + b.Property("Dau") + .HasColumnType("int"); + + b.Property("EnhanceCount") + .HasColumnType("int"); + + b.Property("EnhanceNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("EnhanceUsers") + .HasColumnType("int"); + + b.Property("EventTicketNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("HackAndSlashCount") + .HasColumnType("int"); + + b.Property("HackAndSlashUsers") + .HasColumnType("int"); + + b.Property("HourglassUsage") + .HasColumnType("int"); + + b.Property("NcgTrade") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSlotNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSummonCount") + .HasColumnType("int"); + + b.Property("SweepCount") + .HasColumnType("int"); + + b.Property("SweepUsers") + .HasColumnType("int"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.HasKey("Date"); + + b.HasIndex("Date"); + + b.ToTable("DailyMetrics"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("ItemId"); + + b.ToTable("Equipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingArmorModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingArmor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingBeltModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingBelt"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingNecklaceModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingNecklace"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingRingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingRing"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingWeaponModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingWeapon"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EventConsumableItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("RequiredItem1Count") + .HasColumnType("int"); + + b.Property("RequiredItem1Id") + .HasColumnType("int"); + + b.Property("RequiredItem2Count") + .HasColumnType("int"); + + b.Property("RequiredItem2Id") + .HasColumnType("int"); + + b.Property("RequiredItem3Count") + .HasColumnType("int"); + + b.Property("RequiredItem3Id") + .HasColumnType("int"); + + b.Property("RequiredItem4Count") + .HasColumnType("int"); + + b.Property("RequiredItem4Id") + .HasColumnType("int"); + + b.Property("RequiredItem5Count") + .HasColumnType("int"); + + b.Property("RequiredItem5Id") + .HasColumnType("int"); + + b.Property("RequiredItem6Count") + .HasColumnType("int"); + + b.Property("RequiredItem6Id") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventConsumableItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("EventDungeonId") + .HasColumnType("int"); + + b.Property("EventDungeonStageId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("FoodsCount") + .HasColumnType("int"); + + b.Property("RemainingTickets") + .HasColumnType("int"); + + b.Property("RewardItem10Count") + .HasColumnType("int"); + + b.Property("RewardItem10Id") + .HasColumnType("int"); + + b.Property("RewardItem1Count") + .HasColumnType("int"); + + b.Property("RewardItem1Id") + .HasColumnType("int"); + + b.Property("RewardItem2Count") + .HasColumnType("int"); + + b.Property("RewardItem2Id") + .HasColumnType("int"); + + b.Property("RewardItem3Count") + .HasColumnType("int"); + + b.Property("RewardItem3Id") + .HasColumnType("int"); + + b.Property("RewardItem4Count") + .HasColumnType("int"); + + b.Property("RewardItem4Id") + .HasColumnType("int"); + + b.Property("RewardItem5Count") + .HasColumnType("int"); + + b.Property("RewardItem5Id") + .HasColumnType("int"); + + b.Property("RewardItem6Count") + .HasColumnType("int"); + + b.Property("RewardItem6Id") + .HasColumnType("int"); + + b.Property("RewardItem7Count") + .HasColumnType("int"); + + b.Property("RewardItem7Id") + .HasColumnType("int"); + + b.Property("RewardItem8Count") + .HasColumnType("int"); + + b.Property("RewardItem8Id") + .HasColumnType("int"); + + b.Property("RewardItem9Count") + .HasColumnType("int"); + + b.Property("RewardItem9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventDungeonBattles"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EventMaterialItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("Material10Count") + .HasColumnType("int"); + + b.Property("Material10Id") + .HasColumnType("int"); + + b.Property("Material11Count") + .HasColumnType("int"); + + b.Property("Material11Id") + .HasColumnType("int"); + + b.Property("Material12Count") + .HasColumnType("int"); + + b.Property("Material12Id") + .HasColumnType("int"); + + b.Property("Material1Count") + .HasColumnType("int"); + + b.Property("Material1Id") + .HasColumnType("int"); + + b.Property("Material2Count") + .HasColumnType("int"); + + b.Property("Material2Id") + .HasColumnType("int"); + + b.Property("Material3Count") + .HasColumnType("int"); + + b.Property("Material3Id") + .HasColumnType("int"); + + b.Property("Material4Count") + .HasColumnType("int"); + + b.Property("Material4Id") + .HasColumnType("int"); + + b.Property("Material5Count") + .HasColumnType("int"); + + b.Property("Material5Id") + .HasColumnType("int"); + + b.Property("Material6Count") + .HasColumnType("int"); + + b.Property("Material6Id") + .HasColumnType("int"); + + b.Property("Material7Count") + .HasColumnType("int"); + + b.Property("Material7Id") + .HasColumnType("int"); + + b.Property("Material8Count") + .HasColumnType("int"); + + b.Property("Material8Id") + .HasColumnType("int"); + + b.Property("Material9Count") + .HasColumnType("int"); + + b.Property("Material9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventMaterialItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Crystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("Materials") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("Grindings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionPoint") + .HasColumnType("int"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApStoneCount") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("WorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashSweeps"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GachaCount") + .HasColumnType("int"); + + b.Property("HasStageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffId") + .HasColumnType("int"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasWithRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("GainedCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("MaterialItemId") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("ItemEnhancementFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exp") + .HasColumnType("bigint"); + + b.Property("HammerCount") + .HasColumnType("int"); + + b.Property("HammerExp") + .HasColumnType("bigint"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MaterialId") + .HasColumnType("longtext"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("SheetId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ItemEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArenaRound") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("JoinArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MigrationAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("MigrationStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("MigrateMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntSoulStone") + .HasColumnType("decimal(65,30)"); + + b.Property("ChangedLevel") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputPetLevel") + .HasColumnType("int"); + + b.Property("PetId") + .HasColumnType("int"); + + b.Property("PreviousPetLevel") + .HasColumnType("int"); + + b.Property("TargetLevel") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("PetEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RaiderModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Address") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.Property("HighScore") + .HasColumnType("bigint"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("PurchaseCount") + .HasColumnType("int"); + + b.Property("RaidId") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("bigint"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("RaidId", "Address") + .IsUnique(); + + b.ToTable("Raiders"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ReplacedMaterialCount") + .HasColumnType("int"); + + b.Property("ReplacedMaterialId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ReplaceCombinationEquipmentMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RequestPledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PledgeAgentAddress") + .HasColumnType("longtext"); + + b.Property("RefillMead") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxSigner") + .HasColumnType("longtext"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("RequestPledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntRune") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputRuneLevel") + .HasColumnType("int"); + + b.Property("OutputRuneLevelBonus") + .HasColumnType("int"); + + b.Property("PreviousRuneLevel") + .HasColumnType("int"); + + b.Property("PreviousRuneLevelBonus") + .HasColumnType("int"); + + b.Property("RuneId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TryCount") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("TickerType") + .HasColumnType("varchar(255)"); + + b.Property("AcquiredRune") + .HasColumnType("decimal(65,30)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id", "ActionType", "TickerType"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.HasIndex("Id", "ActionType", "TickerType") + .IsUnique(); + + b.ToTable("RunesAcquired"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopConsumableModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopCostumeModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopEquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryConsumableModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryCostumeModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryEquipmentModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryFungibleAssetValueModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("Quantity") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryFungibleAssetValues"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryMaterialModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopMaterialModel", b => + { + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.ToTable("ShopMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StageRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClearedStageId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("StageRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NewAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("NewStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PrevStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PreviousAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("RemainingNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("Stakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransactionModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("Nonce") + .HasColumnType("bigint"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedAddressesCount") + .HasColumnType("int"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.HasIndex(new[] { "Date", "ActionType" }, "IDX_Date_ActionType"); + + b.ToTable("Transactions"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransferAssetModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("Amount") + .HasColumnType("decimal(65,30)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Recipient") + .HasColumnType("longtext"); + + b.Property("Sender") + .HasColumnType("longtext"); + + b.Property("TickerType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("Date"); + + b.ToTable("TransferAssets"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockEquipmentRecipeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockEquipmentRecipes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCRYSTAL") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockRuneSlots"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockWorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockWorlds"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CrystalBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserCrystals"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserEquipmentsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.ToTable("UserEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MonsterCollectionAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("RewardLevel") + .HasColumnType("bigint"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("NCGBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserNCGs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("RuneBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserRunes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CancellableBlockIndex") + .HasColumnType("bigint"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserStakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossRankingModel", b => + { + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("AvatarName") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("HighScore") + .HasColumnType("int"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("int"); + + b.ToTable("WorldBossRankings", null, t => t.ExcludeFromMigrations()); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossSeasonMigrationModel", b => + { + b.Property("RaidId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("MigratedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("RaidId"); + + b.HasIndex("RaidId") + .IsUnique(); + + b.ToTable("WorldBossSeasonMigrationModels"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany("ActivateCollections") + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("NineChronicles.DataProvider.Store.Models.CollectionOptionModel", "Options", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b1.Property("ActivateCollectionId") + .HasColumnType("int"); + + b1.Property("OperationType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("StatType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("Value") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ActivateCollectionId"); + + b1.ToTable("CollectionOptionModel"); + + b1.WithOwner() + .HasForeignKey("ActivateCollectionId"); + }); + + b.Navigation("Avatar"); + + b.Navigation("Options"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "RaffleWinner") + .WithMany() + .HasForeignKey("RaffleWinnerAddress"); + + b.Navigation("RaffleWinner"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Navigation("ActivateCollections"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240911092734_UpdateGrinding.cs b/NineChronicles.DataProvider.Executable/Migrations/20240911092734_UpdateGrinding.cs new file mode 100644 index 00000000..ab64d2a6 --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240911092734_UpdateGrinding.cs @@ -0,0 +1,26 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + public partial class UpdateGrinding : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Materials", + table: "Grindings", + type: "longtext", + nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Materials", + table: "Grindings"); + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240912124503_CustomEquipmentCraft.Designer.cs b/NineChronicles.DataProvider.Executable/Migrations/20240912124503_CustomEquipmentCraft.Designer.cs new file mode 100644 index 00000000..89e64e1c --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240912124503_CustomEquipmentCraft.Designer.cs @@ -0,0 +1,4333 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using NineChronicles.DataProvider.Store; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + [DbContext(typeof(NineChroniclesContext))] + [Migration("20240912124503_CustomEquipmentCraft")] + partial class CustomEquipmentCraft + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AbilityRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("AbilityRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ActionId") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CollectionId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress", "CollectionId") + .IsUnique(); + + b.ToTable("ActivateCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("StartFloor") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossChallenge"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimedSeason") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NcgReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RewardData") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossClaimReward"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossRush"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.Property("Season") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BossId") + .HasColumnType("int"); + + b.Property("ClaimableBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("FixedRewardData") + .HasColumnType("longtext"); + + b.Property("NextSeasonBlockIndex") + .HasColumnType("bigint"); + + b.Property("RaffleReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RaffleWinnerAddress") + .HasColumnType("varchar(255)"); + + b.Property("RandomRewardData") + .HasColumnType("longtext"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Season"); + + b.HasIndex("RaffleWinnerAddress"); + + b.ToTable("AdventureBossSeason"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalUsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("TotalUsedNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("UnlockFloor") + .HasColumnType("int"); + + b.Property("UsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("UsedNcg") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossUnlockFloor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Bounty") + .HasColumnType("decimal(65,30)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalBounty") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossWanted"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AgentModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.HasKey("Address"); + + b.ToTable("Agents"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ApprovePledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PatronAddress") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("ApprovePledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.HasKey("Address"); + + b.HasIndex("AgentAddress"); + + b.ToTable("Avatars"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EnemyAvatarAddress") + .HasColumnType("longtext"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("TicketCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaRankingModel", b => + { + b.Property("AdditionalTicketPrice") + .HasColumnType("bigint"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArenaType") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("EntranceFee") + .HasColumnType("bigint"); + + b.Property("LossCount") + .HasColumnType("int"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("PurchasedTicketCount") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("RequiredMedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("Score") + .HasColumnType("int"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Ticket") + .HasColumnType("int"); + + b.Property("TicketPrice") + .HasColumnType("bigint"); + + b.Property("TicketResetCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.Property("WinCount") + .HasColumnType("int"); + + b.ToTable("BattleArenaRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EnemyAvatarAddress") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("GrandFinaleId") + .HasColumnType("int"); + + b.Property("GrandFinaleScore") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleGrandFinales"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BlockModel", b => + { + b.Property("Hash") + .HasColumnType("varchar(255)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Difficulty") + .HasColumnType("bigint"); + + b.Property("Index") + .HasColumnType("bigint"); + + b.Property("Miner") + .HasColumnType("longtext"); + + b.Property("Nonce") + .HasColumnType("longtext"); + + b.Property("PreviousHash") + .HasColumnType("longtext"); + + b.Property("ProtocolVersion") + .HasColumnType("int"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("StateRootHash") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalDifficulty") + .HasColumnType("bigint"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.Property("TxHash") + .HasColumnType("longtext"); + + b.HasKey("Hash"); + + b.HasIndex("Date"); + + b.HasIndex("Index"); + + b.ToTable("Blocks"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApPotionCount") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimRewardAvatarAddress") + .HasColumnType("longtext"); + + b.Property("ClaimStakeEndBlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourGlassCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("ClaimStakeRewards"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OptionCount") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SkillContains") + .HasColumnType("tinyint(1)"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("SubRecipeId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AdditionalCost") + .HasColumnType("longtext"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Circle") + .HasColumnType("int"); + + b.Property("CraftWithRandom") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("HasRandomOnlyIcon") + .HasColumnType("tinyint(1)"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("OptionId") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("Relationship") + .HasColumnType("int"); + + b.Property("Scroll") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalCP") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("CustomEquipmentCraft"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourglassCount") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RapidCombinations"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CraftRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CraftCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("CraftRankings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.DailyMetricModel", b => + { + b.Property("Date") + .HasColumnType("date"); + + b.Property("ApUsage") + .HasColumnType("int"); + + b.Property("ArenaNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("AuraSummonCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableUsers") + .HasColumnType("int"); + + b.Property("CraftingEquipmentCount") + .HasColumnType("int"); + + b.Property("CraftingEquipmentUsers") + .HasColumnType("int"); + + b.Property("DailyNew") + .HasColumnType("int"); + + b.Property("Dau") + .HasColumnType("int"); + + b.Property("EnhanceCount") + .HasColumnType("int"); + + b.Property("EnhanceNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("EnhanceUsers") + .HasColumnType("int"); + + b.Property("EventTicketNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("HackAndSlashCount") + .HasColumnType("int"); + + b.Property("HackAndSlashUsers") + .HasColumnType("int"); + + b.Property("HourglassUsage") + .HasColumnType("int"); + + b.Property("NcgTrade") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSlotNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSummonCount") + .HasColumnType("int"); + + b.Property("SweepCount") + .HasColumnType("int"); + + b.Property("SweepUsers") + .HasColumnType("int"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.HasKey("Date"); + + b.HasIndex("Date"); + + b.ToTable("DailyMetrics"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("ItemId"); + + b.ToTable("Equipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingArmorModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingArmor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingBeltModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingBelt"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingNecklaceModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingNecklace"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingRingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingRing"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingWeaponModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingWeapon"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EventConsumableItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("RequiredItem1Count") + .HasColumnType("int"); + + b.Property("RequiredItem1Id") + .HasColumnType("int"); + + b.Property("RequiredItem2Count") + .HasColumnType("int"); + + b.Property("RequiredItem2Id") + .HasColumnType("int"); + + b.Property("RequiredItem3Count") + .HasColumnType("int"); + + b.Property("RequiredItem3Id") + .HasColumnType("int"); + + b.Property("RequiredItem4Count") + .HasColumnType("int"); + + b.Property("RequiredItem4Id") + .HasColumnType("int"); + + b.Property("RequiredItem5Count") + .HasColumnType("int"); + + b.Property("RequiredItem5Id") + .HasColumnType("int"); + + b.Property("RequiredItem6Count") + .HasColumnType("int"); + + b.Property("RequiredItem6Id") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventConsumableItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("EventDungeonId") + .HasColumnType("int"); + + b.Property("EventDungeonStageId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("FoodsCount") + .HasColumnType("int"); + + b.Property("RemainingTickets") + .HasColumnType("int"); + + b.Property("RewardItem10Count") + .HasColumnType("int"); + + b.Property("RewardItem10Id") + .HasColumnType("int"); + + b.Property("RewardItem1Count") + .HasColumnType("int"); + + b.Property("RewardItem1Id") + .HasColumnType("int"); + + b.Property("RewardItem2Count") + .HasColumnType("int"); + + b.Property("RewardItem2Id") + .HasColumnType("int"); + + b.Property("RewardItem3Count") + .HasColumnType("int"); + + b.Property("RewardItem3Id") + .HasColumnType("int"); + + b.Property("RewardItem4Count") + .HasColumnType("int"); + + b.Property("RewardItem4Id") + .HasColumnType("int"); + + b.Property("RewardItem5Count") + .HasColumnType("int"); + + b.Property("RewardItem5Id") + .HasColumnType("int"); + + b.Property("RewardItem6Count") + .HasColumnType("int"); + + b.Property("RewardItem6Id") + .HasColumnType("int"); + + b.Property("RewardItem7Count") + .HasColumnType("int"); + + b.Property("RewardItem7Id") + .HasColumnType("int"); + + b.Property("RewardItem8Count") + .HasColumnType("int"); + + b.Property("RewardItem8Id") + .HasColumnType("int"); + + b.Property("RewardItem9Count") + .HasColumnType("int"); + + b.Property("RewardItem9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventDungeonBattles"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EventMaterialItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("Material10Count") + .HasColumnType("int"); + + b.Property("Material10Id") + .HasColumnType("int"); + + b.Property("Material11Count") + .HasColumnType("int"); + + b.Property("Material11Id") + .HasColumnType("int"); + + b.Property("Material12Count") + .HasColumnType("int"); + + b.Property("Material12Id") + .HasColumnType("int"); + + b.Property("Material1Count") + .HasColumnType("int"); + + b.Property("Material1Id") + .HasColumnType("int"); + + b.Property("Material2Count") + .HasColumnType("int"); + + b.Property("Material2Id") + .HasColumnType("int"); + + b.Property("Material3Count") + .HasColumnType("int"); + + b.Property("Material3Id") + .HasColumnType("int"); + + b.Property("Material4Count") + .HasColumnType("int"); + + b.Property("Material4Id") + .HasColumnType("int"); + + b.Property("Material5Count") + .HasColumnType("int"); + + b.Property("Material5Id") + .HasColumnType("int"); + + b.Property("Material6Count") + .HasColumnType("int"); + + b.Property("Material6Id") + .HasColumnType("int"); + + b.Property("Material7Count") + .HasColumnType("int"); + + b.Property("Material7Id") + .HasColumnType("int"); + + b.Property("Material8Count") + .HasColumnType("int"); + + b.Property("Material8Id") + .HasColumnType("int"); + + b.Property("Material9Count") + .HasColumnType("int"); + + b.Property("Material9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventMaterialItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Crystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("Materials") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("Grindings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionPoint") + .HasColumnType("int"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApStoneCount") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("WorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashSweeps"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GachaCount") + .HasColumnType("int"); + + b.Property("HasStageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffId") + .HasColumnType("int"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasWithRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("GainedCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("MaterialItemId") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("ItemEnhancementFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exp") + .HasColumnType("bigint"); + + b.Property("HammerCount") + .HasColumnType("int"); + + b.Property("HammerExp") + .HasColumnType("bigint"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MaterialId") + .HasColumnType("longtext"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("SheetId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ItemEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArenaRound") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("JoinArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MigrationAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("MigrationStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("MigrateMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntSoulStone") + .HasColumnType("decimal(65,30)"); + + b.Property("ChangedLevel") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputPetLevel") + .HasColumnType("int"); + + b.Property("PetId") + .HasColumnType("int"); + + b.Property("PreviousPetLevel") + .HasColumnType("int"); + + b.Property("TargetLevel") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("PetEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RaiderModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Address") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.Property("HighScore") + .HasColumnType("bigint"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("PurchaseCount") + .HasColumnType("int"); + + b.Property("RaidId") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("bigint"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("RaidId", "Address") + .IsUnique(); + + b.ToTable("Raiders"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ReplacedMaterialCount") + .HasColumnType("int"); + + b.Property("ReplacedMaterialId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ReplaceCombinationEquipmentMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RequestPledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PledgeAgentAddress") + .HasColumnType("longtext"); + + b.Property("RefillMead") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxSigner") + .HasColumnType("longtext"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("RequestPledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntRune") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputRuneLevel") + .HasColumnType("int"); + + b.Property("OutputRuneLevelBonus") + .HasColumnType("int"); + + b.Property("PreviousRuneLevel") + .HasColumnType("int"); + + b.Property("PreviousRuneLevelBonus") + .HasColumnType("int"); + + b.Property("RuneId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TryCount") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("TickerType") + .HasColumnType("varchar(255)"); + + b.Property("AcquiredRune") + .HasColumnType("decimal(65,30)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id", "ActionType", "TickerType"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.HasIndex("Id", "ActionType", "TickerType") + .IsUnique(); + + b.ToTable("RunesAcquired"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopConsumableModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopCostumeModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopEquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryConsumableModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryCostumeModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryEquipmentModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryFungibleAssetValueModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("Quantity") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryFungibleAssetValues"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryMaterialModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopMaterialModel", b => + { + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.ToTable("ShopMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StageRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClearedStageId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("StageRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NewAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("NewStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PrevStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PreviousAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("RemainingNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("Stakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransactionModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("Nonce") + .HasColumnType("bigint"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedAddressesCount") + .HasColumnType("int"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.HasIndex(new[] { "Date", "ActionType" }, "IDX_Date_ActionType"); + + b.ToTable("Transactions"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransferAssetModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("Amount") + .HasColumnType("decimal(65,30)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Recipient") + .HasColumnType("longtext"); + + b.Property("Sender") + .HasColumnType("longtext"); + + b.Property("TickerType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("Date"); + + b.ToTable("TransferAssets"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockEquipmentRecipeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockEquipmentRecipes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCRYSTAL") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockRuneSlots"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockWorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockWorlds"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CrystalBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserCrystals"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserEquipmentsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.ToTable("UserEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MonsterCollectionAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("RewardLevel") + .HasColumnType("bigint"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("NCGBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserNCGs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("RuneBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserRunes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CancellableBlockIndex") + .HasColumnType("bigint"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserStakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossRankingModel", b => + { + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("AvatarName") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("HighScore") + .HasColumnType("int"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("int"); + + b.ToTable("WorldBossRankings", null, t => t.ExcludeFromMigrations()); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossSeasonMigrationModel", b => + { + b.Property("RaidId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("MigratedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("RaidId"); + + b.HasIndex("RaidId") + .IsUnique(); + + b.ToTable("WorldBossSeasonMigrationModels"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany("ActivateCollections") + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("NineChronicles.DataProvider.Store.Models.CollectionOptionModel", "Options", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b1.Property("ActivateCollectionId") + .HasColumnType("int"); + + b1.Property("OperationType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("StatType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("Value") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ActivateCollectionId"); + + b1.ToTable("CollectionOptionModel"); + + b1.WithOwner() + .HasForeignKey("ActivateCollectionId"); + }); + + b.Navigation("Avatar"); + + b.Navigation("Options"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "RaffleWinner") + .WithMany() + .HasForeignKey("RaffleWinnerAddress"); + + b.Navigation("RaffleWinner"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Navigation("ActivateCollections"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240912124503_CustomEquipmentCraft.cs b/NineChronicles.DataProvider.Executable/Migrations/20240912124503_CustomEquipmentCraft.cs new file mode 100644 index 00000000..c8d6756c --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240912124503_CustomEquipmentCraft.cs @@ -0,0 +1,129 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + public partial class CustomEquipmentCraft : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "AgentAddress", + table: "CustomEquipmentCraft", + type: "varchar(255)", + nullable: false, + defaultValue: string.Empty + ).Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.AddColumn( + name: "Relationship", + table: "CustomEquipmentCraft", + type: "int", + nullable: false + ); + + migrationBuilder.AddColumn( + name: "TotalCP", + table: "CustomEquipmentCraft", + type: "int", + nullable: false + ); + + migrationBuilder.AddColumn( + name: "OptionId", + table: "CustomEquipmentCraft", + type: "int", + nullable: false + ); + + migrationBuilder.AddColumn( + name: "CraftWithRandom", + table: "CustomEquipmentCraft", + type: "tinyint(1)", + nullable: false + ); + + migrationBuilder.AddColumn( + name: "HasRandomOnlyIcon", + table: "CustomEquipmentCraft", + type: "tinyint(1)", + nullable: false + ); + + migrationBuilder.RenameColumn( + name: "DrawingAmount", + table: "CustomEquipmentCraft", + newName: "Scroll" + ); + migrationBuilder.RenameColumn( + name: "DrawingToolAmount", + table: "CustomEquipmentCraft", + newName: "Circle" + ); + + migrationBuilder.AddForeignKey( + name: "FK_CustomEquipmentCraft_Agents_AgentAddress", + table: "CustomEquipmentCraft", + column: "AgentAddress", + principalTable: "Agents", + principalColumn: "Address" + ); + + migrationBuilder.CreateIndex( + name: "IX_CustomEquipmentCraft_AgentAddress", + table: "CustomEquipmentCraft", + column: "AgentAddress"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_CustomEquipmentCraft_AgentAddress", + table: "CustomEquipmentCraft" + ); + + migrationBuilder.DropForeignKey( + name: "FK_CustomEquipmentCraft_Agents_AgentAddress", + table: "CustomEquipmentCraft" + ); + + migrationBuilder.RenameColumn( + name: "Circle", + table: "CustomEquipmentCraft", + newName: "DrawingToolAmount" + ); + migrationBuilder.RenameColumn( + name: "Scroll", + table: "CustomEquipmentCraft", + newName: "DrawingAmount" + ); + + migrationBuilder.DropColumn( + name: "HasRandomOnlyIcon", + table: "CustomEquipmentCraft" + ); + migrationBuilder.DropColumn( + name: "CraftWithRandom", + table: "CustomEquipmentCraft" + ); + migrationBuilder.DropColumn( + name: "OptionId", + table: "CustomEquipmentCraft" + ); + migrationBuilder.DropColumn( + name: "TotalCP", + table: "CustomEquipmentCraft" + ); + migrationBuilder.DropColumn( + name: "relationship", + table: "CustomEquipmentCraft" + ); + migrationBuilder.DropColumn( + name: "AgentAddress", + table: "CustomEquipmentCraft" + ); + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240912163112_UnlockCombinationSlot.Designer.cs b/NineChronicles.DataProvider.Executable/Migrations/20240912163112_UnlockCombinationSlot.Designer.cs new file mode 100644 index 00000000..76646df8 --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240912163112_UnlockCombinationSlot.Designer.cs @@ -0,0 +1,4415 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using NineChronicles.DataProvider.Store; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + [DbContext(typeof(NineChroniclesContext))] + [Migration("20240912163112_UnlockCombinationSlot")] + partial class UnlockCombinationSlot + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AbilityRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("AbilityRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ActionId") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CollectionId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress", "CollectionId") + .IsUnique(); + + b.ToTable("ActivateCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("StartFloor") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossChallenge"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimedSeason") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NcgReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RewardData") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossClaimReward"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndFloor") + .HasColumnType("int"); + + b.Property("Point") + .HasColumnType("int"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalPoint") + .HasColumnType("bigint"); + + b.Property("UsedApPotion") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossRush"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.Property("Season") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BossId") + .HasColumnType("int"); + + b.Property("ClaimableBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("FixedRewardData") + .HasColumnType("longtext"); + + b.Property("NextSeasonBlockIndex") + .HasColumnType("bigint"); + + b.Property("RaffleReward") + .HasColumnType("decimal(65,30)"); + + b.Property("RaffleWinnerAddress") + .HasColumnType("varchar(255)"); + + b.Property("RandomRewardData") + .HasColumnType("longtext"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Season"); + + b.HasIndex("RaffleWinnerAddress"); + + b.ToTable("AdventureBossSeason"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalUsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("TotalUsedNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("UnlockFloor") + .HasColumnType("int"); + + b.Property("UsedGoldenDust") + .HasColumnType("bigint"); + + b.Property("UsedNcg") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossUnlockFloor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Bounty") + .HasColumnType("decimal(65,30)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Season") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalBounty") + .HasColumnType("decimal(65,30)"); + + b.HasKey("Id"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("AdventureBossWanted"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AgentModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.HasKey("Address"); + + b.ToTable("Agents"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ApprovePledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PatronAddress") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("ApprovePledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("AuraSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Property("Address") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.HasKey("Address"); + + b.HasIndex("AgentAddress"); + + b.ToTable("Avatars"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EnemyAvatarAddress") + .HasColumnType("longtext"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("TicketCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaRankingModel", b => + { + b.Property("AdditionalTicketPrice") + .HasColumnType("bigint"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArenaType") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EndBlockIndex") + .HasColumnType("bigint"); + + b.Property("EntranceFee") + .HasColumnType("bigint"); + + b.Property("LossCount") + .HasColumnType("int"); + + b.Property("MedalCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("PurchasedTicketCount") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("RequiredMedalCount") + .HasColumnType("int"); + + b.Property("Round") + .HasColumnType("int"); + + b.Property("Score") + .HasColumnType("int"); + + b.Property("StartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Ticket") + .HasColumnType("int"); + + b.Property("TicketPrice") + .HasColumnType("bigint"); + + b.Property("TicketResetCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.Property("WinCount") + .HasColumnType("int"); + + b.ToTable("BattleArenaRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EnemyAvatarAddress") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("GrandFinaleId") + .HasColumnType("int"); + + b.Property("GrandFinaleScore") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("Victory") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("BattleGrandFinales"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BlockModel", b => + { + b.Property("Hash") + .HasColumnType("varchar(255)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Difficulty") + .HasColumnType("bigint"); + + b.Property("Index") + .HasColumnType("bigint"); + + b.Property("Miner") + .HasColumnType("longtext"); + + b.Property("Nonce") + .HasColumnType("longtext"); + + b.Property("PreviousHash") + .HasColumnType("longtext"); + + b.Property("ProtocolVersion") + .HasColumnType("int"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("StateRootHash") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalDifficulty") + .HasColumnType("bigint"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.Property("TxHash") + .HasColumnType("longtext"); + + b.HasKey("Hash"); + + b.HasIndex("Date"); + + b.HasIndex("Index"); + + b.ToTable("Blocks"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApPotionCount") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimRewardAvatarAddress") + .HasColumnType("longtext"); + + b.Property("ClaimStakeEndBlockIndex") + .HasColumnType("bigint"); + + b.Property("ClaimStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourGlassCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("ClaimStakeRewards"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OptionCount") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("SkillContains") + .HasColumnType("tinyint(1)"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("SubRecipeId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("CombinationEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftCountModel", b => + { + b.Property("IconId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.HasKey("IconId"); + + b.ToTable("CustomEquipmentCraftCount"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AdditionalCost") + .HasColumnType("longtext"); + + b.Property("AdditionalCost") + .HasColumnType("longtext"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Circle") + .HasColumnType("int"); + + b.Property("CraftWithRandom") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("EquipmentItemId") + .HasColumnType("int"); + + b.Property("HasRandomOnlyIcon") + .HasColumnType("tinyint(1)"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("NcgCost") + .HasColumnType("decimal(65,30)"); + + b.Property("OptionId") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("Relationship") + .HasColumnType("int"); + + b.Property("Scroll") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalCP") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("CustomEquipmentCraft"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourglassCount") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RapidCombinations"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.UnlockCombinationSlotModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CrystalCost") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MaterialCosts") + .HasColumnType("longtext"); + + b.Property("NcgCost") + .HasColumnType("decimal(65,30)"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UnlockCombinationSlot"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CraftRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CraftCount") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("CraftRankings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.DailyMetricModel", b => + { + b.Property("Date") + .HasColumnType("date"); + + b.Property("ApUsage") + .HasColumnType("int"); + + b.Property("ArenaNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("AuraSummonCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableCount") + .HasColumnType("int"); + + b.Property("CraftingConsumableUsers") + .HasColumnType("int"); + + b.Property("CraftingEquipmentCount") + .HasColumnType("int"); + + b.Property("CraftingEquipmentUsers") + .HasColumnType("int"); + + b.Property("DailyNew") + .HasColumnType("int"); + + b.Property("Dau") + .HasColumnType("int"); + + b.Property("EnhanceCount") + .HasColumnType("int"); + + b.Property("EnhanceNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("EnhanceUsers") + .HasColumnType("int"); + + b.Property("EventTicketNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("HackAndSlashCount") + .HasColumnType("int"); + + b.Property("HackAndSlashUsers") + .HasColumnType("int"); + + b.Property("HourglassUsage") + .HasColumnType("int"); + + b.Property("NcgTrade") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSlotNcg") + .HasColumnType("decimal(65,30)"); + + b.Property("RuneSummonCount") + .HasColumnType("int"); + + b.Property("SweepCount") + .HasColumnType("int"); + + b.Property("SweepUsers") + .HasColumnType("int"); + + b.Property("TxCount") + .HasColumnType("int"); + + b.HasKey("Date"); + + b.HasIndex("Date"); + + b.ToTable("DailyMetrics"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("ItemId"); + + b.ToTable("Equipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingArmorModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingArmor"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingBeltModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingBelt"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingNecklaceModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingNecklace"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingRingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingRing"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EquipmentRankingWeaponModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("EquipmentRankingWeapon"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EventConsumableItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("RequiredItem1Count") + .HasColumnType("int"); + + b.Property("RequiredItem1Id") + .HasColumnType("int"); + + b.Property("RequiredItem2Count") + .HasColumnType("int"); + + b.Property("RequiredItem2Id") + .HasColumnType("int"); + + b.Property("RequiredItem3Count") + .HasColumnType("int"); + + b.Property("RequiredItem3Id") + .HasColumnType("int"); + + b.Property("RequiredItem4Count") + .HasColumnType("int"); + + b.Property("RequiredItem4Id") + .HasColumnType("int"); + + b.Property("RequiredItem5Count") + .HasColumnType("int"); + + b.Property("RequiredItem5Id") + .HasColumnType("int"); + + b.Property("RequiredItem6Count") + .HasColumnType("int"); + + b.Property("RequiredItem6Id") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventConsumableItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("EventDungeonId") + .HasColumnType("int"); + + b.Property("EventDungeonStageId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("FoodsCount") + .HasColumnType("int"); + + b.Property("RemainingTickets") + .HasColumnType("int"); + + b.Property("RewardItem10Count") + .HasColumnType("int"); + + b.Property("RewardItem10Id") + .HasColumnType("int"); + + b.Property("RewardItem1Count") + .HasColumnType("int"); + + b.Property("RewardItem1Id") + .HasColumnType("int"); + + b.Property("RewardItem2Count") + .HasColumnType("int"); + + b.Property("RewardItem2Id") + .HasColumnType("int"); + + b.Property("RewardItem3Count") + .HasColumnType("int"); + + b.Property("RewardItem3Id") + .HasColumnType("int"); + + b.Property("RewardItem4Count") + .HasColumnType("int"); + + b.Property("RewardItem4Id") + .HasColumnType("int"); + + b.Property("RewardItem5Count") + .HasColumnType("int"); + + b.Property("RewardItem5Id") + .HasColumnType("int"); + + b.Property("RewardItem6Count") + .HasColumnType("int"); + + b.Property("RewardItem6Id") + .HasColumnType("int"); + + b.Property("RewardItem7Count") + .HasColumnType("int"); + + b.Property("RewardItem7Id") + .HasColumnType("int"); + + b.Property("RewardItem8Count") + .HasColumnType("int"); + + b.Property("RewardItem8Id") + .HasColumnType("int"); + + b.Property("RewardItem9Count") + .HasColumnType("int"); + + b.Property("RewardItem9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventDungeonBattles"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("EventMaterialItemRecipeId") + .HasColumnType("int"); + + b.Property("EventScheduleId") + .HasColumnType("int"); + + b.Property("Material10Count") + .HasColumnType("int"); + + b.Property("Material10Id") + .HasColumnType("int"); + + b.Property("Material11Count") + .HasColumnType("int"); + + b.Property("Material11Id") + .HasColumnType("int"); + + b.Property("Material12Count") + .HasColumnType("int"); + + b.Property("Material12Id") + .HasColumnType("int"); + + b.Property("Material1Count") + .HasColumnType("int"); + + b.Property("Material1Id") + .HasColumnType("int"); + + b.Property("Material2Count") + .HasColumnType("int"); + + b.Property("Material2Id") + .HasColumnType("int"); + + b.Property("Material3Count") + .HasColumnType("int"); + + b.Property("Material3Id") + .HasColumnType("int"); + + b.Property("Material4Count") + .HasColumnType("int"); + + b.Property("Material4Id") + .HasColumnType("int"); + + b.Property("Material5Count") + .HasColumnType("int"); + + b.Property("Material5Id") + .HasColumnType("int"); + + b.Property("Material6Count") + .HasColumnType("int"); + + b.Property("Material6Id") + .HasColumnType("int"); + + b.Property("Material7Count") + .HasColumnType("int"); + + b.Property("Material7Id") + .HasColumnType("int"); + + b.Property("Material8Count") + .HasColumnType("int"); + + b.Property("Material8Id") + .HasColumnType("int"); + + b.Property("Material9Count") + .HasColumnType("int"); + + b.Property("Material9Id") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("EventMaterialItemCrafts"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Crystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("Materials") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("Grindings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionPoint") + .HasColumnType("int"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ApStoneCount") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("CostumesCount") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentsCount") + .HasColumnType("int"); + + b.Property("Mimisbrunnr") + .HasColumnType("tinyint(1)"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("Timestamp") + .HasColumnType("datetime(6)"); + + b.Property("WorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HackAndSlashSweeps"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GachaCount") + .HasColumnType("int"); + + b.Property("HasStageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffId") + .HasColumnType("int"); + + b.Property("Cleared") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("StageId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("HasWithRandomBuffs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("EquipmentItemId") + .HasColumnType("longtext"); + + b.Property("EquipmentLevel") + .HasColumnType("int"); + + b.Property("GainedCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("MaterialItemId") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("ItemEnhancementFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exp") + .HasColumnType("bigint"); + + b.Property("HammerCount") + .HasColumnType("int"); + + b.Property("HammerExp") + .HasColumnType("bigint"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MaterialId") + .HasColumnType("longtext"); + + b.Property("MaterialIdsCount") + .HasColumnType("int"); + + b.Property("SheetId") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ItemEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("ArenaRound") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("ChampionshipId") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("JoinArenas"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MigrationAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("MigrationStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("MigrateMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntSoulStone") + .HasColumnType("decimal(65,30)"); + + b.Property("ChangedLevel") + .HasColumnType("int"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputPetLevel") + .HasColumnType("int"); + + b.Property("PetId") + .HasColumnType("int"); + + b.Property("PreviousPetLevel") + .HasColumnType("int"); + + b.Property("TargetLevel") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("PetEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RaiderModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Address") + .IsRequired() + .HasColumnType("varchar(255)"); + + b.Property("AvatarName") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.Property("HighScore") + .HasColumnType("bigint"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("PurchaseCount") + .HasColumnType("int"); + + b.Property("RaidId") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("bigint"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("RaidId", "Address") + .IsUnique(); + + b.ToTable("Raiders"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ReplacedMaterialCount") + .HasColumnType("int"); + + b.Property("ReplacedMaterialId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("ReplaceCombinationEquipmentMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RequestPledgeModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("PledgeAgentAddress") + .HasColumnType("longtext"); + + b.Property("RefillMead") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxSigner") + .HasColumnType("longtext"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.ToTable("RequestPledges"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntRune") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("OutputRuneLevel") + .HasColumnType("int"); + + b.Property("OutputRuneLevelBonus") + .HasColumnType("int"); + + b.Property("PreviousRuneLevel") + .HasColumnType("int"); + + b.Property("PreviousRuneLevelBonus") + .HasColumnType("int"); + + b.Property("RuneId") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TryCount") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneEnhancements"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("TickerType") + .HasColumnType("varchar(255)"); + + b.Property("AcquiredRune") + .HasColumnType("decimal(65,30)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id", "ActionType", "TickerType"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.HasIndex("Id", "ActionType", "TickerType") + .IsUnique(); + + b.ToTable("RunesAcquired"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Exception") + .HasColumnType("longtext"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummonFails"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("GroupId") + .HasColumnType("int"); + + b.Property("SummonCount") + .HasColumnType("int"); + + b.Property("SummonResult") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RuneSummons"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopConsumableModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopCostumeModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopEquipmentModel", b => + { + b.Property("ItemId") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("ItemId"); + + b.ToTable("ShopEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryConsumableModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryCostumeModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryEquipmentModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryFungibleAssetValueModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("Quantity") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryFungibleAssetValues"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopHistoryMaterialModel", b => + { + b.Property("OrderId") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuyerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("OrderId"); + + b.HasIndex("Date"); + + b.ToTable("ShopHistoryMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ShopMaterialModel", b => + { + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CombatPoint") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemCount") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("OrderId") + .HasColumnType("longtext"); + + b.Property("Price") + .HasColumnType("decimal(65,30)"); + + b.Property("SellExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellStartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("SellerAgentAddress") + .HasColumnType("longtext"); + + b.Property("SellerAvatarAddress") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.ToTable("ShopMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StageRankingModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("ArmorId") + .HasColumnType("int"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("AvatarLevel") + .HasColumnType("int"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ClearedStageId") + .HasColumnType("int"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TitleId") + .HasColumnType("int"); + + b.ToTable("StageRanking"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("NewAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("NewStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PrevStakeStartBlockIndex") + .HasColumnType("bigint"); + + b.Property("PreviousAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("RemainingNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("Date"); + + b.ToTable("Stakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransactionModel", b => + { + b.Property("TxId") + .HasColumnType("varchar(255)"); + + b.Property("ActionType") + .HasColumnType("varchar(255)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("datetime(6)"); + + b.Property("Nonce") + .HasColumnType("bigint"); + + b.Property("PublicKey") + .HasColumnType("longtext"); + + b.Property("Signer") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UpdatedAddressesCount") + .HasColumnType("int"); + + b.HasKey("TxId"); + + b.HasIndex("Date"); + + b.HasIndex(new[] { "Date", "ActionType" }, "IDX_Date_ActionType"); + + b.ToTable("Transactions"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.TransferAssetModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("Amount") + .HasColumnType("decimal(65,30)"); + + b.Property("BlockHash") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("Recipient") + .HasColumnType("longtext"); + + b.Property("Sender") + .HasColumnType("longtext"); + + b.Property("TickerType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TxId") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("Date"); + + b.ToTable("TransferAssets"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockEquipmentRecipeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockEquipmentRecipes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCRYSTAL") + .HasColumnType("decimal(65,30)"); + + b.Property("BurntNCG") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockRuneSlots"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BurntCrystal") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("UnlockWorldId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("UnlockWorlds"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("MainStat") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserConsumables"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Equipped") + .HasColumnType("tinyint(1)"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserCostumes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CrystalBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserCrystals"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserEquipmentsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("longtext"); + + b.Property("AvatarAddress") + .HasColumnType("longtext"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("BuffSkillCount") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("NonFungibleId") + .HasColumnType("longtext"); + + b.Property("RequiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("SetId") + .HasColumnType("int"); + + b.Property("SkillsCount") + .HasColumnType("int"); + + b.Property("SpineResourcePath") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TradableId") + .HasColumnType("longtext"); + + b.Property("UniqueStatType") + .HasColumnType("longtext"); + + b.ToTable("UserEquipments"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("Grade") + .HasColumnType("int"); + + b.Property("Id") + .HasColumnType("int"); + + b.Property("ItemId") + .HasColumnType("longtext"); + + b.Property("ItemSubType") + .HasColumnType("longtext"); + + b.Property("ItemType") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserMaterials"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("ExpiredBlockIndex") + .HasColumnType("bigint"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("MonsterCollectionAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("RewardLevel") + .HasColumnType("bigint"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserMonsterCollections"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("NCGBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserNCGs"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("RuneBalance") + .HasColumnType("decimal(65,30)"); + + b.Property("Ticker") + .HasColumnType("longtext"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UserRunes"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CancellableBlockIndex") + .HasColumnType("bigint"); + + b.Property("ReceivedBlockIndex") + .HasColumnType("bigint"); + + b.Property("StakeAmount") + .HasColumnType("decimal(65,30)"); + + b.Property("StartedBlockIndex") + .HasColumnType("bigint"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasIndex("AgentAddress"); + + b.ToTable("UserStakings"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossRankingModel", b => + { + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("AvatarName") + .HasColumnType("longtext"); + + b.Property("Cp") + .HasColumnType("int"); + + b.Property("HighScore") + .HasColumnType("int"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Ranking") + .HasColumnType("int"); + + b.Property("TotalScore") + .HasColumnType("int"); + + b.ToTable("WorldBossRankings", null, t => t.ExcludeFromMigrations()); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.WorldBossSeasonMigrationModel", b => + { + b.Property("RaidId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("MigratedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime(6)"); + + b.HasKey("RaidId"); + + b.HasIndex("RaidId") + .IsUnique(); + + b.ToTable("WorldBossSeasonMigrationModels"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ActivateCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany("ActivateCollections") + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsMany("NineChronicles.DataProvider.Store.Models.CollectionOptionModel", "Options", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b1.Property("ActivateCollectionId") + .HasColumnType("int"); + + b1.Property("OperationType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("StatType") + .IsRequired() + .HasColumnType("longtext"); + + b1.Property("Value") + .HasColumnType("bigint"); + + b1.HasKey("Id"); + + b1.HasIndex("ActivateCollectionId"); + + b1.ToTable("CollectionOptionModel"); + + b1.WithOwner() + .HasForeignKey("ActivateCollectionId"); + }); + + b.Navigation("Avatar"); + + b.Navigation("Options"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossChallengeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossClaimRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossRushModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossSeasonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "RaffleWinner") + .WithMany() + .HasForeignKey("RaffleWinnerAddress"); + + b.Navigation("RaffleWinner"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossUnlockFloorModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AdventureBoss.AdventureBossWantedModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AuraSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.BattleGrandFinaleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ClaimStakeRewardModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationConsumableModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CombinationEquipmentModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.UnlockCombinationSlotModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventDungeonBattleModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventMaterialItemCraftsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HackAndSlashSweepModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.HasWithRandomBuffModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ItemEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.JoinArenaModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.MigrateMonsterCollectionModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.PetEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneEnhancementModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RunesAcquiredModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonFailModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RuneSummonModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.StakeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockEquipmentRecipeModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockRuneSlotModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UnlockWorldModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserConsumablesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCostumesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserCrystalsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMaterialsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserMonsterCollectionsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserNCGsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserRunesModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.UserStakingsModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.Navigation("Agent"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.AvatarModel", b => + { + b.Navigation("ActivateCollections"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/20240912163112_UnlockCombinationSlot.cs b/NineChronicles.DataProvider.Executable/Migrations/20240912163112_UnlockCombinationSlot.cs new file mode 100644 index 00000000..874473b0 --- /dev/null +++ b/NineChronicles.DataProvider.Executable/Migrations/20240912163112_UnlockCombinationSlot.cs @@ -0,0 +1,64 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace NineChronicles.DataProvider.Executable.Migrations +{ + public partial class UnlockCombinationSlot : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "UnlockCombinationSlot", + columns: table => new + { + Id = table.Column(type: "varchar(255)", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + AgentAddress = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + AvatarAddress = table.Column(type: "varchar(255)", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + SlotIndex = table.Column(type: "int", nullable: false), + NcgCost = table.Column(type: "decimal(65,30)", nullable: false), + CrystalCost = table.Column(type: "decimal(65,30)", nullable: false), + MaterialCosts = table.Column(type: "longtext", nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + BlockIndex = table.Column(type: "bigint", nullable: false), + Date = table.Column(type: "date", nullable: false), + TimeStamp = table.Column(type: "datetime(6)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UnlockCombinationSlot", x => x.Id); + table.ForeignKey( + name: "FK_UnlockCombinationSlot_Agents_AgentAddress", + column: x => x.AgentAddress, + principalTable: "Agents", + principalColumn: "Address"); + table.ForeignKey( + name: "FK_UnlockCombinationSlot_Avatars_AvatarAddress", + column: x => x.AvatarAddress, + principalTable: "Avatars", + principalColumn: "Address"); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_UnlockCombinationSlot_AgentAddress", + table: "UnlockCombinationSlot", + column: "AgentAddress"); + + migrationBuilder.CreateIndex( + name: "IX_UnlockCombinationSlot_AvatarAddress", + table: "UnlockCombinationSlot", + column: "AvatarAddress"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "UnlockCombinationSlot"); + } + } +} diff --git a/NineChronicles.DataProvider.Executable/Migrations/NineChroniclesContextModelSnapshot.cs b/NineChronicles.DataProvider.Executable/Migrations/NineChroniclesContextModelSnapshot.cs index c5efded0..1e439a01 100644 --- a/NineChronicles.DataProvider.Executable/Migrations/NineChroniclesContextModelSnapshot.cs +++ b/NineChronicles.DataProvider.Executable/Migrations/NineChroniclesContextModelSnapshot.cs @@ -835,6 +835,152 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("CombinationEquipments"); }); + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AdditionalCost") + .HasColumnType("longtext"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Circle") + .HasColumnType("int"); + + b.Property("CraftWithRandom") + .HasColumnType("tinyint(1)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("ElementalType") + .HasColumnType("longtext"); + + b.Property("EquipmentId") + .HasColumnType("int"); + + b.Property("HasRandomOnlyIcon") + .HasColumnType("tinyint(1)"); + + b.Property("IconId") + .HasColumnType("int"); + + b.Property("OptionId") + .HasColumnType("int"); + + b.Property("RecipeId") + .HasColumnType("int"); + + b.Property("Relationship") + .HasColumnType("int"); + + b.Property("Scroll") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.Property("TotalCP") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("CustomEquipmentCraft"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("HourglassCount") + .HasColumnType("int"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.HasIndex("Date"); + + b.ToTable("RapidCombinations"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.UnlockCombinationSlotModel", b => + { + b.Property("Id") + .HasColumnType("varchar(255)"); + + b.Property("AgentAddress") + .HasColumnType("varchar(255)"); + + b.Property("AvatarAddress") + .HasColumnType("varchar(255)"); + + b.Property("BlockIndex") + .HasColumnType("bigint"); + + b.Property("CrystalCost") + .HasColumnType("decimal(65,30)"); + + b.Property("Date") + .HasColumnType("date"); + + b.Property("MaterialCosts") + .HasColumnType("longtext"); + + b.Property("NcgCost") + .HasColumnType("decimal(65,30)"); + + b.Property("SlotIndex") + .HasColumnType("int"); + + b.Property("TimeStamp") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("AgentAddress"); + + b.HasIndex("AvatarAddress"); + + b.ToTable("UnlockCombinationSlot"); + }); + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.CraftRankingModel", b => { b.Property("AgentAddress") @@ -1533,7 +1679,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("EventMaterialItemCrafts"); }); - modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.GrindingModel", b => + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => { b.Property("Id") .HasColumnType("varchar(255)"); @@ -1562,6 +1708,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("EquipmentLevel") .HasColumnType("int"); + b.Property("Materials") + .HasColumnType("longtext"); + b.Property("TimeStamp") .HasColumnType("datetime(6)"); @@ -2035,43 +2184,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Raiders"); }); - modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RapidCombinationModel", b => - { - b.Property("Id") - .HasColumnType("varchar(255)"); - - b.Property("AgentAddress") - .HasColumnType("varchar(255)"); - - b.Property("AvatarAddress") - .HasColumnType("varchar(255)"); - - b.Property("BlockIndex") - .HasColumnType("bigint"); - - b.Property("Date") - .HasColumnType("date"); - - b.Property("HourglassCount") - .HasColumnType("int"); - - b.Property("SlotIndex") - .HasColumnType("int"); - - b.Property("TimeStamp") - .HasColumnType("datetime(6)"); - - b.HasKey("Id"); - - b.HasIndex("AgentAddress"); - - b.HasIndex("AvatarAddress"); - - b.HasIndex("Date"); - - b.ToTable("RapidCombinations"); - }); - modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => { b.Property("Id") @@ -3802,6 +3914,51 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Avatar"); }); + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.CustomEquipmentCraftModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.RapidCombinationModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Crafting.UnlockCombinationSlotModel", b => + { + b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") + .WithMany() + .HasForeignKey("AgentAddress"); + + b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") + .WithMany() + .HasForeignKey("AvatarAddress"); + + b.Navigation("Agent"); + + b.Navigation("Avatar"); + }); + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.EventConsumableItemCraftsModel", b => { b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") @@ -3851,7 +4008,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Avatar"); }); - modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.GrindingModel", b => + modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.Grinding.GrindingModel", b => { b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") .WithMany() @@ -3995,21 +4152,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Avatar"); }); - modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.RapidCombinationModel", b => - { - b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") - .WithMany() - .HasForeignKey("AgentAddress"); - - b.HasOne("NineChronicles.DataProvider.Store.Models.AvatarModel", "Avatar") - .WithMany() - .HasForeignKey("AvatarAddress"); - - b.Navigation("Agent"); - - b.Navigation("Avatar"); - }); - modelBuilder.Entity("NineChronicles.DataProvider.Store.Models.ReplaceCombinationEquipmentMaterialModel", b => { b.HasOne("NineChronicles.DataProvider.Store.Models.AgentModel", "Agent") diff --git a/NineChronicles.DataProvider.Executable/NineChronicles.DataProvider.Executable.csproj b/NineChronicles.DataProvider.Executable/NineChronicles.DataProvider.Executable.csproj index c3e365a0..d403c775 100644 --- a/NineChronicles.DataProvider.Executable/NineChronicles.DataProvider.Executable.csproj +++ b/NineChronicles.DataProvider.Executable/NineChronicles.DataProvider.Executable.csproj @@ -1,7 +1,7 @@ Exe - net6 + net8.0 true true $(NoWarn),1573,1591,1712,MEN002,MEN003,MEN005,S1450,SA1009,SA1101,SA1111,SA1116,S1134,SA1200,SA1309,SA1413,SA1600,SA1601,SA1633,EF1001,S1075 diff --git a/NineChronicles.DataProvider.Executable/Program.cs b/NineChronicles.DataProvider.Executable/Program.cs index b68bbd1f..8f57426a 100644 --- a/NineChronicles.DataProvider.Executable/Program.cs +++ b/NineChronicles.DataProvider.Executable/Program.cs @@ -1,5 +1,4 @@ #nullable enable -using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.IO; @@ -200,6 +199,7 @@ IActionEvaluatorConfiguration GetActionEvaluatorConfiguration(IConfiguration con hostBuilder.ConfigureServices(services => { services.AddSingleton(_ => context); + services.AddSingleton(_ => context.KeyStore); }); hostBuilder.UseNineChroniclesNode(nineChroniclesProperties, context, publisher, service); diff --git a/NineChronicles.DataProvider.Tests/ItemEnhancementDataTest.cs b/NineChronicles.DataProvider.Tests/ItemEnhancementDataTest.cs index 42effcc8..bc3161c2 100644 --- a/NineChronicles.DataProvider.Tests/ItemEnhancementDataTest.cs +++ b/NineChronicles.DataProvider.Tests/ItemEnhancementDataTest.cs @@ -9,7 +9,9 @@ using Microsoft.Extensions.DependencyInjection; using Nekoyume; using Nekoyume.Action; +using Nekoyume.Model; using Nekoyume.Model.Item; +using Nekoyume.Model.Quest; using Nekoyume.Model.State; using Nekoyume.Module; using Nekoyume.TableData; @@ -44,10 +46,20 @@ public void GetItemEnhancementInfo() 6,Jotunheim,251,300 7,Niflheim,301,350 8,Hel,351,400"); + var avatarName = "test"; var avatarSheets = new AvatarSheets(worldSheet, new QuestSheet(), new QuestRewardSheet(), new QuestItemRewardSheet(), new EquipmentItemRecipeSheet(), new EquipmentItemSubRecipeSheet()); var avatarAddress = new PrivateKey().Address; - var avatarState = new AvatarState(avatarAddress, _signer, 1L, avatarSheets, default, "test"); + var worldInformation = new WorldInformation(blockIndex, avatarSheets.WorldSheet, + GameConfig.IsEditor, avatarName); + var questList = new QuestList( + avatarSheets.QuestSheet, + avatarSheets.QuestRewardSheet, + avatarSheets.QuestItemRewardSheet, + avatarSheets.EquipmentItemRecipeSheet, + avatarSheets.EquipmentItemSubRecipeSheet + ); + var avatarState = new AvatarState(avatarAddress, _signer, 1L, questList, worldInformation, default, avatarName); var equipmentRow = new EquipmentItemSheet.Row(); equipmentRow.Set("10100000,Weapon,0,Normal,0,ATK,1,2,10100000,10".Split(",")); var itemId = Guid.NewGuid(); @@ -94,14 +106,16 @@ public void GetItemEnhancementInfo() Assert.Equal(totalHammerCount, model.HammerCount); Assert.Equal(totalHammerExp, model.HammerExp); } + protected override IWorldState GetMockState() { var mockWorldState = MockWorldState.CreateModern(); var goldCurrencyState = new GoldCurrencyState(_currency); - mockWorldState = mockWorldState.SetAccount(ReservedAddresses.LegacyAccount, + mockWorldState = mockWorldState.SetAccount( + ReservedAddresses.LegacyAccount, new Account(mockWorldState.GetAccountState(ReservedAddresses.LegacyAccount)) - .SetState(Addresses.GoldCurrency, goldCurrencyState.Serialize())) - .SetBalance(_signer, 1 * _currency); + .SetState(Addresses.GoldCurrency, goldCurrencyState.Serialize()) + ).SetBalance(_signer, 1 * _currency); return mockWorldState; } } diff --git a/NineChronicles.DataProvider.Tests/NineChronicles.DataProvider.Tests.csproj b/NineChronicles.DataProvider.Tests/NineChronicles.DataProvider.Tests.csproj index 35c5c327..4da9a358 100644 --- a/NineChronicles.DataProvider.Tests/NineChronicles.DataProvider.Tests.csproj +++ b/NineChronicles.DataProvider.Tests/NineChronicles.DataProvider.Tests.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 enable false diff --git a/NineChronicles.DataProvider.Tests/Store/CustomEquipmentCraftStoreTest.cs b/NineChronicles.DataProvider.Tests/Store/CustomEquipmentCraftStoreTest.cs new file mode 100644 index 00000000..178431e1 --- /dev/null +++ b/NineChronicles.DataProvider.Tests/Store/CustomEquipmentCraftStoreTest.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Libplanet.Action.State; +using Libplanet.Crypto; +using Libplanet.Mocks; +using Microsoft.Extensions.DependencyInjection; +using NineChronicles.DataProvider.Store; +using NineChronicles.DataProvider.Store.Models.Crafting; +using Xunit; + +namespace NineChronicles.DataProvider.Tests.Store; + +public class CustomEquipmentCraftStoreTest : TestBase +{ + [Theory] + [InlineData(true)] + [InlineData(false)] + public async Task UpsertCraftCount(bool hasPrevData) + { + const string itemSubType = "Weapon"; + const int iconId = 90000001; + + var provider = Services.BuildServiceProvider(); + var store = provider.GetRequiredService(); + + var now = DateTimeOffset.UtcNow; + var address = new PrivateKey().Address; + store.StoreAgent(address); + store.StoreAvatar(address, address, "name", now, 1, null, null, 0); + var prevDataCount = 0; + + if (hasPrevData) + { + prevDataCount = new Random().Next(1, 11); + var cecList = new List(); + var guid = Guid.NewGuid().ToString(); + for (var i = 0; i < prevDataCount; i++) + { + cecList.Add(new CustomEquipmentCraftModel + { + Id = $"{guid}_{i}", + BlockIndex = 1L, + AgentAddress = address.ToString(), + AvatarAddress = address.ToString(), + SlotIndex = 1, + RecipeId = 1, + Relationship = 10, + Scroll = 1, + Circle = 1, + NcgCost = 0, + AdditionalCost = "", + EquipmentItemId = 10010001, + ItemSubType = itemSubType, + ElementalType = "Normal", + IconId = iconId, + TotalCP = 10000, + OptionId = 11, + CraftWithRandom = true, + HasRandomOnlyIcon = false, + Date = DateOnly.FromDateTime(now.DateTime), + TimeStamp = now + }); + } + + await store.StoreCustomEquipmentCraftList(cecList); + } + + var countList = store.GetCustomEquipmentCraftCount(itemSubType); + if (hasPrevData) + { + Assert.Single(countList); + var prevData = countList.First(); + Assert.Equal(itemSubType, prevData.ItemSubType); + Assert.Equal(iconId, prevData.IconId); + Assert.Equal(prevDataCount, prevData.Count); + } + else + { + Assert.Empty(countList); + } + + // Add new data + await store.StoreCustomEquipmentCraftList(new List + { + new() + { + Id = Guid.NewGuid().ToString(), + BlockIndex = 1L, + AgentAddress = address.ToString(), + AvatarAddress = address.ToString(), + SlotIndex = 1, + RecipeId = 1, + Relationship = 10, + Scroll = 1, + Circle = 1, + NcgCost = 0, + AdditionalCost = "", + EquipmentItemId = 10010001, + ItemSubType = itemSubType, + ElementalType = "Normal", + IconId = iconId, + TotalCP = 10000, + OptionId = 11, + CraftWithRandom = true, + HasRandomOnlyIcon = false, + Date = DateOnly.FromDateTime(now.DateTime), + TimeStamp = now + } + }); + countList = store.GetCustomEquipmentCraftCount(itemSubType); + + // Test + Assert.Single(countList); + var data = countList.First(); + Assert.Equal(itemSubType, data.ItemSubType); + Assert.Equal(iconId, data.IconId); + Assert.Equal(prevDataCount + 1, data.Count); + } + + protected override IWorldState GetMockState() + { + return MockWorldState.CreateModern(); + } +} diff --git a/NineChronicles.DataProvider/DataRendering/AdventureBoss/AdventureBossClaimRewardData.cs b/NineChronicles.DataProvider/DataRendering/AdventureBoss/AdventureBossClaimRewardData.cs index fcefee12..dc8ab5b5 100644 --- a/NineChronicles.DataProvider/DataRendering/AdventureBoss/AdventureBossClaimRewardData.cs +++ b/NineChronicles.DataProvider/DataRendering/AdventureBoss/AdventureBossClaimRewardData.cs @@ -32,8 +32,8 @@ ClaimAdventureBossReward claim var gameConfig = states.GetGameConfigState(); var ncgRewardRatioSheet = states.GetSheet(); - var continueInv = true; - var continueExp = true; + bool continueInv; + bool continueExp; var claimedSeasonList = new List(); @@ -59,6 +59,12 @@ ClaimAdventureBossReward claim break; } + // Skip not participated season + if (investor is null && explorer is null) + { + continue; + } + if (investor is not null) { continueInv = AdventureBossHelper.CollectWantedReward( @@ -75,6 +81,10 @@ ref myReward investor.Claimed = true; states = states.SetBountyBoard(szn, bountyBoard); } + else + { + continueInv = false; + } if (explorer is not null) { @@ -94,7 +104,12 @@ out ncgReward explorer.Claimed = true; states = states.SetExplorer(szn, explorer); } + else + { + continueExp = false; + } + // Stop if stop both investor and explorer if (!continueInv && !continueExp) { break; diff --git a/NineChronicles.DataProvider/DataRendering/Crafting/CustomEquipmentCraftData.cs b/NineChronicles.DataProvider/DataRendering/Crafting/CustomEquipmentCraftData.cs new file mode 100644 index 00000000..055f26fb --- /dev/null +++ b/NineChronicles.DataProvider/DataRendering/Crafting/CustomEquipmentCraftData.cs @@ -0,0 +1,118 @@ +namespace NineChronicles.DataProvider.DataRendering.Crafting +{ + using System; + using System.Collections.Generic; + using System.Linq; + using Libplanet.Action; + using Libplanet.Action.State; + using Libplanet.Crypto; + using Nekoyume.Action.CustomEquipmentCraft; + using Nekoyume.Extensions; + using Nekoyume.Helper; + using Nekoyume.Model.Item; + using Nekoyume.Module; + using Nekoyume.TableData; + using Nekoyume.TableData.CustomEquipmentCraft; + using NineChronicles.DataProvider.Store.Models.Crafting; + + public static class CustomEquipmentCraftData + { + public static List GetCustomEquipmentCraftInfo( + IWorld prevState, + IWorld outputState, + IRandom random, + Address signer, + Guid actionId, + CustomEquipmentCraft action, + long blockIndex, + DateTimeOffset blockTime + ) + { + var info = new List(); + var outputCombinationSlots = outputState.GetAllCombinationSlotState(action.AvatarAddress); + var relationship = prevState.GetRelationship(action.AvatarAddress); + var sheets = prevState.GetSheets(sheetTypes: new List + { + typeof(CustomEquipmentCraftRecipeSheet), + typeof(CustomEquipmentCraftRelationshipSheet), + typeof(CustomEquipmentCraftOptionSheet), + typeof(MaterialItemSheet), + }); + var recipeSheet = sheets.GetSheet(); + var relationshipSheet = sheets.GetSheet(); + var optionSheet = sheets.GetSheet(); + var materialSheet = sheets.GetSheet(); + var gameConfig = prevState.GetGameConfigState(); + + for (var i = 0; i < action.CraftList.Count; i++) + { + var craftData = action.CraftList[i]; + var recipeRow = recipeSheet.OrderedList!.First(row => row.Id == craftData.RecipeId); + var relationshipRow = relationshipSheet.OrderedList!.Reverse() + .First(row => row.Relationship <= relationship); + var slot = outputCombinationSlots.GetSlot(craftData.SlotIndex); + var equipment = (Equipment)slot.Result.itemUsable; + var (ncgCost, materialCosts) = CustomCraftHelper.CalculateCraftCost( + craftData.IconId, + relationship, + sheets.GetSheet(), + recipeRow, + relationshipRow, + gameConfig.CustomEquipmentCraftIconCostMultiplier + ); + + var scrollId = materialSheet.Values.First(row => row.ItemSubType == ItemSubType.Scroll).Id; + var circleId = materialSheet.Values.First(row => row.ItemSubType == ItemSubType.Circle).Id; + var scrollCost = 0; + var circleCost = 0; + var additional = new List(); + + foreach (var cost in materialCosts) + { + if (cost.Key == scrollId) + { + scrollCost = cost.Value; + } + else if (cost.Key == circleId) + { + circleCost = cost.Value; + } + else + { + additional.Add($"{cost.Key}:{cost.Value}"); + } + } + + info.Add(new CustomEquipmentCraftModel + { + Id = $"{actionId}_{i}", + AgentAddress = signer.ToString(), + AvatarAddress = action.AvatarAddress.ToString(), + RecipeId = craftData.RecipeId, + SlotIndex = craftData.SlotIndex, + Scroll = scrollCost, + Circle = circleCost, + NcgCost = (decimal)ncgCost, + AdditionalCost = string.Join(",", additional), + Relationship = relationship, + ItemSubType = equipment.ItemSubType.ToString(), + EquipmentItemId = equipment.Id, + IconId = equipment.IconId, + ElementalType = equipment.ElementalType.ToString(), + OptionId = ItemFactory.SelectOption(recipeRow.ItemSubType, optionSheet, random).Id, + TotalCP = CustomCraftHelper.SelectCp(relationshipRow, random), + CraftWithRandom = equipment.CraftWithRandom, + HasRandomOnlyIcon = equipment.HasRandomOnlyIcon, + BlockIndex = blockIndex, + Date = DateOnly.FromDateTime(blockTime.DateTime), + TimeStamp = blockTime.UtcDateTime, + } + ); + + relationship++; + } + + return info; + } + } +} diff --git a/NineChronicles.DataProvider/DataRendering/Crafting/RapidCombinationData.cs b/NineChronicles.DataProvider/DataRendering/Crafting/RapidCombinationData.cs new file mode 100644 index 00000000..ea1c19b6 --- /dev/null +++ b/NineChronicles.DataProvider/DataRendering/Crafting/RapidCombinationData.cs @@ -0,0 +1,49 @@ +namespace NineChronicles.DataProvider.DataRendering.Crafting +{ + using System; + using System.Collections.Generic; + using Libplanet.Action.State; + using Libplanet.Crypto; + using Nekoyume.Action; + using Nekoyume.Module; + using NineChronicles.DataProvider.Store.Models.Crafting; + + public static class RapidCombinationData + { + public static List GetRapidCombinationInfo( + IWorld previousStates, + Address signer, + Address avatarAddress, + List slotIndexList, + Guid actionId, + long blockIndex, + DateTimeOffset blockTime + ) + { + var states = previousStates; + var slotStates = states.GetAllCombinationSlotState(avatarAddress); + var gameConfigState = states.GetGameConfigState(); + var combinationList = new List(); + for (var i = 0; i < slotIndexList.Count; i++) + { + var slotIndex = slotIndexList[i]; + var slotState = slotStates.GetSlot(slotIndex); + var diff = slotState.Result.itemUsable.RequiredBlockIndex - blockIndex; + var count = RapidCombination0.CalculateHourglassCount(gameConfigState, diff); + combinationList.Add(new RapidCombinationModel + { + Id = $"{actionId}_{i}", + BlockIndex = blockIndex, + AgentAddress = signer.ToString(), + AvatarAddress = avatarAddress.ToString(), + SlotIndex = slotIndex, + HourglassCount = count, + Date = DateOnly.FromDateTime(blockTime.DateTime), + TimeStamp = blockTime, + }); + } + + return combinationList; + } + } +} diff --git a/NineChronicles.DataProvider/DataRendering/Crafting/UnlockCombinationSlotData.cs b/NineChronicles.DataProvider/DataRendering/Crafting/UnlockCombinationSlotData.cs new file mode 100644 index 00000000..b622e84c --- /dev/null +++ b/NineChronicles.DataProvider/DataRendering/Crafting/UnlockCombinationSlotData.cs @@ -0,0 +1,52 @@ +namespace NineChronicles.DataProvider.DataRendering.Crafting +{ + using System; + using System.Collections.Generic; + using Libplanet.Action.State; + using Libplanet.Crypto; + using Nekoyume.Action; + using Nekoyume.Module; + using Nekoyume.TableData; + using NineChronicles.DataProvider.Store.Models.Crafting; + + public static class UnlockCombinationSlotData + { + private const int GoldenDustId = 600201; + private const int RubyDustId = 600202; + + public static UnlockCombinationSlotModel GetUnlockCombinationSlotInfo( + IWorld prevStates, + Address signer, + UnlockCombinationSlot action, + long blockIndex, + DateTimeOffset blockTime + ) + { + var cost = prevStates.GetSheet()[action.SlotIndex]; + var materialCost = new List(); + if (cost.GoldenDustPrice > 0) + { + materialCost.Add($"{GoldenDustId}:{cost.GoldenDustPrice}"); + } + + if (cost.RubyDustPrice > 0) + { + materialCost.Add($"{RubyDustId}:{cost.RubyDustPrice}"); + } + + return new UnlockCombinationSlotModel + { + Id = Guid.NewGuid().ToString(), + AgentAddress = signer.ToString(), + AvatarAddress = action.AvatarAddress.ToString(), + SlotIndex = action.SlotIndex, + NcgCost = (decimal)cost.NcgPrice, + CrystalCost = cost.CrystalPrice, + MaterialCosts = string.Join(",", materialCost), + BlockIndex = blockIndex, + Date = DateOnly.FromDateTime(blockTime.DateTime), + TimeStamp = blockTime, + }; + } + } +} diff --git a/NineChronicles.DataProvider/DataRendering/GrindingData.cs b/NineChronicles.DataProvider/DataRendering/Grinding/GrindingData.cs similarity index 62% rename from NineChronicles.DataProvider/DataRendering/GrindingData.cs rename to NineChronicles.DataProvider/DataRendering/Grinding/GrindingData.cs index acac7c41..b73f8ce6 100644 --- a/NineChronicles.DataProvider/DataRendering/GrindingData.cs +++ b/NineChronicles.DataProvider/DataRendering/Grinding/GrindingData.cs @@ -1,11 +1,11 @@ -namespace NineChronicles.DataProvider.DataRendering +namespace NineChronicles.DataProvider.DataRendering.Grinding { using System; using System.Collections.Generic; + using System.Linq; using Bencodex.Types; using Libplanet.Action.State; using Libplanet.Crypto; - using Libplanet.Types.Assets; using Nekoyume.Action; using Nekoyume.Extensions; using Nekoyume.Helper; @@ -15,13 +15,13 @@ namespace NineChronicles.DataProvider.DataRendering using Nekoyume.Module; using Nekoyume.TableData; using Nekoyume.TableData.Crystal; - using NineChronicles.DataProvider.Store.Models; + using NineChronicles.DataProvider.Store.Models.Grinding; + using Serilog; public static class GrindingData { public static List GetGrindingInfo( IWorld previousStates, - IWorld outputStates, Address signer, Address avatarAddress, List equipmentIds, @@ -30,14 +30,20 @@ public static List GetGrindingInfo( DateTimeOffset blockTime ) { - AvatarState prevAvatarState = previousStates.GetAvatarState(avatarAddress); - AgentState? agentState = previousStates.GetAgentState(signer); + var prevAvatarState = previousStates.GetAvatarState( + avatarAddress, + getInventory: true, + getQuestList: false, + getWorldInformation: false + ); + + var agentState = previousStates.GetAgentState(signer); if (agentState is null) { throw new FailedLoadStateException("Aborted as the agent state failed to load."); } - Address monsterCollectionAddress = MonsterCollectionState.DeriveAddress( + var monsterCollectionAddress = MonsterCollectionState.DeriveAddress( signer, agentState.MonsterCollectionRound ); @@ -49,7 +55,7 @@ DateTimeOffset blockTime typeof(StakeRegularRewardSheet), }); - List equipmentList = new List(); + var equipmentList = new List(); foreach (var equipmentId in equipmentIds) { if (prevAvatarState.inventory.TryGetNonFungibleItem(equipmentId, out Equipment equipment)) @@ -58,8 +64,8 @@ DateTimeOffset blockTime } } - Currency currency = previousStates.GetGoldCurrency(); - FungibleAssetValue stakedAmount = 0 * currency; + var currency = previousStates.GetGoldCurrency(); + var stakedAmount = 0 * currency; if (previousStates.TryGetStakeStateV2(signer, out _)) { var stakeAddr = StakeStateV2.DeriveAddress(signer); @@ -73,34 +79,44 @@ DateTimeOffset blockTime } } - FungibleAssetValue crystal = CrystalCalculator.CalculateCrystal( - signer, - equipmentList, - stakedAmount, - false, - sheets.GetSheet(), - sheets.GetSheet(), - sheets.GetSheet() - ); - var grindList = new List(); - foreach (var equipment in equipmentList) + for (var i = 0; i < equipmentList.Count; i++) { + var equipment = equipmentList[i]; + var crystal = CrystalCalculator.CalculateCrystal( + signer, + new List { equipment }, + stakedAmount, + false, + sheets.GetSheet(), + sheets.GetSheet(), + sheets.GetSheet() + ); + + var materials = Grinding.CalculateMaterialReward( + new List { equipment }, + sheets.GetSheet(), + sheets.GetSheet() + ); + var materialList = materials.Select(kv => $"{kv.Key.Id}:{kv.Value}").ToList(); + grindList.Add(new GrindingModel() { - Id = actionId.ToString(), + Id = $"{actionId}_{i:D3}", AgentAddress = signer.ToString(), AvatarAddress = avatarAddress.ToString(), EquipmentItemId = equipment.ItemId.ToString(), EquipmentId = equipment.Id, EquipmentLevel = equipment.level, Crystal = Convert.ToDecimal(crystal.GetQuantityString()), + Materials = string.Join(",", materialList), BlockIndex = blockIndex, Date = DateOnly.FromDateTime(blockTime.DateTime), TimeStamp = blockTime, }); } + Log.Debug($"{grindList.Count} grinding collected from {signer}"); return grindList; } } diff --git a/NineChronicles.DataProvider/DataRendering/RapidCombinationData.cs b/NineChronicles.DataProvider/DataRendering/RapidCombinationData.cs deleted file mode 100644 index 5997e293..00000000 --- a/NineChronicles.DataProvider/DataRendering/RapidCombinationData.cs +++ /dev/null @@ -1,43 +0,0 @@ -namespace NineChronicles.DataProvider.DataRendering -{ - using System; - using Libplanet.Action.State; - using Libplanet.Crypto; - using Nekoyume.Action; - using Nekoyume.Module; - using NineChronicles.DataProvider.Store.Models; - - public static class RapidCombinationData - { - public static RapidCombinationModel GetRapidCombinationInfo( - IWorld previousStates, - IWorld outputStates, - Address signer, - Address avatarAddress, - int slotIndex, - Guid actionId, - long blockIndex, - DateTimeOffset blockTime - ) - { - var states = previousStates; - var slotState = states.GetCombinationSlotState(avatarAddress, slotIndex); - var diff = slotState.Result.itemUsable.RequiredBlockIndex - blockIndex; - var gameConfigState = states.GetGameConfigState(); - var count = RapidCombination0.CalculateHourglassCount(gameConfigState, diff); - var rapidCombinationModel = new RapidCombinationModel() - { - Id = actionId.ToString(), - BlockIndex = blockIndex, - AgentAddress = signer.ToString(), - AvatarAddress = avatarAddress.ToString(), - SlotIndex = slotIndex, - HourglassCount = count, - Date = DateOnly.FromDateTime(blockTime.DateTime), - TimeStamp = blockTime, - }; - - return rapidCombinationModel; - } - } -} diff --git a/NineChronicles.DataProvider/GraphQLStartup.cs b/NineChronicles.DataProvider/GraphQLStartup.cs index 8ecc6d5b..c9299b0d 100644 --- a/NineChronicles.DataProvider/GraphQLStartup.cs +++ b/NineChronicles.DataProvider/GraphQLStartup.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Concurrent; using GraphQL.Server; + using GraphQL.Server.Transports.AspNetCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -11,6 +12,10 @@ using NineChronicles.DataProvider.GraphTypes; using NineChronicles.Headless; using NineChronicles.Headless.GraphTypes; + using NineChronicles.Headless.Repositories.BlockChain; + using NineChronicles.Headless.Repositories.StateTrie; + using NineChronicles.Headless.Repositories.Transaction; + using NineChronicles.Headless.Repositories.WorldState; public class GraphQLStartup { @@ -44,6 +49,10 @@ public void ConfigureServices(IServiceCollection services) .AddLibplanetExplorer(); services.AddSingleton(); services.AddGraphTypes(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); } diff --git a/NineChronicles.DataProvider/GraphTypes/CustomEquipmentCraftIconCountType.cs b/NineChronicles.DataProvider/GraphTypes/CustomEquipmentCraftIconCountType.cs new file mode 100644 index 00000000..1800cd56 --- /dev/null +++ b/NineChronicles.DataProvider/GraphTypes/CustomEquipmentCraftIconCountType.cs @@ -0,0 +1,16 @@ +namespace NineChronicles.DataProvider.GraphTypes +{ + using GraphQL.Types; + using NineChronicles.DataProvider.Store.Models.Crafting; + + public class CustomEquipmentCraftIconCountType : ObjectGraphType + { + public CustomEquipmentCraftIconCountType() + { + Name = "CustomEquipmentCraftIconCount"; + Field(x => x.ItemSubType); + Field(x => x.IconId); + Field(x => x.Count); + } + } +} diff --git a/NineChronicles.DataProvider/NineChronicles.DataProvider.csproj b/NineChronicles.DataProvider/NineChronicles.DataProvider.csproj index e2a5d835..bcbec0e6 100644 --- a/NineChronicles.DataProvider/NineChronicles.DataProvider.csproj +++ b/NineChronicles.DataProvider/NineChronicles.DataProvider.csproj @@ -1,7 +1,7 @@ - net6 + net8.0 true enable true diff --git a/NineChronicles.DataProvider/Queries/NineChroniclesSummaryQuery.cs b/NineChronicles.DataProvider/Queries/NineChroniclesSummaryQuery.cs index bb7bcb04..b83b61df 100644 --- a/NineChronicles.DataProvider/Queries/NineChroniclesSummaryQuery.cs +++ b/NineChronicles.DataProvider/Queries/NineChroniclesSummaryQuery.cs @@ -353,6 +353,22 @@ public NineChroniclesSummaryQuery(MySqlStore store, StandaloneContext standalone throw new ExecutionError("can't receive"); } ); + + Field>( + "customEquipmentCraftIconCount", + arguments: new QueryArguments( + new QueryArgument + { + Name = "itemSubType", + Description = "ItemSubType to get craft count for icons", + } + ), + resolve: context => + { + var itemSubType = context.GetArgument("itemSubType"); + return Store.GetCustomEquipmentCraftCount(itemSubType); + } + ); } private MySqlStore Store { get; } diff --git a/NineChronicles.DataProvider/RenderSubscriber.cs b/NineChronicles.DataProvider/RenderSubscriber.cs index 768e7a5c..4bc25841 100644 --- a/NineChronicles.DataProvider/RenderSubscriber.cs +++ b/NineChronicles.DataProvider/RenderSubscriber.cs @@ -18,6 +18,7 @@ namespace NineChronicles.DataProvider using Nekoyume; using Nekoyume.Action; using Nekoyume.Action.AdventureBoss; + using Nekoyume.Action.CustomEquipmentCraft; using Nekoyume.Extensions; using Nekoyume.Helper; using Nekoyume.Model.EnumType; @@ -29,6 +30,7 @@ namespace NineChronicles.DataProvider using Nekoyume.TableData.Rune; using Nekoyume.TableData.Summon; using NineChronicles.DataProvider.DataRendering; + using NineChronicles.DataProvider.DataRendering.Crafting; using NineChronicles.DataProvider.Store; using NineChronicles.DataProvider.Store.Models; using NineChronicles.Headless; @@ -60,7 +62,6 @@ public partial class RenderSubscriber : BackgroundService private readonly List _stakeList = new List(); private readonly List _claimStakeList = new List(); private readonly List _mmcList = new List(); - private readonly List _grindList = new List(); private readonly List _itemEnhancementFailList = new List(); private readonly List _unlockEquipmentRecipeList = new List(); private readonly List _unlockWorldList = new List(); @@ -80,7 +81,6 @@ public partial class RenderSubscriber : BackgroundService private readonly List _runeEnhancementList = new List(); private readonly List _runesAcquiredList = new List(); private readonly List _unlockRuneSlotList = new List(); - private readonly List _rapidCombinationList = new List(); private readonly List _petEnhancementList = new List(); private readonly List _transferAssetList = new List(); private readonly List _requestPledgeList = new List(); @@ -92,6 +92,7 @@ public partial class RenderSubscriber : BackgroundService private readonly List
_agents; private readonly List
_avatars; private readonly bool _render; + private int _renderedBlockCount; private DateTimeOffset _blockTimeOffset; private Address _miner; @@ -576,9 +577,8 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) (end - start).Milliseconds); start = DateTimeOffset.UtcNow; - var slotState = outputState.GetCombinationSlotState( - combinationEquipment.avatarAddress, - combinationEquipment.slotIndex); + var slotState = outputState.GetAllCombinationSlotState(combinationEquipment.avatarAddress) + .GetSlot(combinationEquipment.slotIndex); int optionCount = 0; bool skillContains = false; @@ -683,9 +683,8 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) Log.Debug("[DataProvider] Stored ItemEnhancement action in block #{index}. Time Taken: {time} ms.", ev.BlockIndex, (end - start).Milliseconds); start = DateTimeOffset.UtcNow; - var slotState = outputState.GetCombinationSlotState( - itemEnhancement.avatarAddress, - itemEnhancement.slotIndex); + var slotState = outputState.GetAllCombinationSlotState(itemEnhancement.avatarAddress) + .GetSlot(itemEnhancement.slotIndex); if (slotState?.Result.itemUsable.ItemType is ItemType.Equipment) { @@ -731,7 +730,7 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) foreach (var purchaseInfo in buy.purchaseInfos) { var state = outputState.GetLegacyState( - Addresses.GetItemAddress(purchaseInfo.TradableId)); + Addresses.GetItemAddress(purchaseInfo.TradableId)); ITradableItem orderItem = (ITradableItem)ItemFactory.Deserialize((Dictionary)state!); Order order = @@ -950,40 +949,6 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) } }); - _actionRenderer.EveryRender() - .Subscribe(ev => - { - try - { - if (ev.Action is { } grinding) - { - var start = DateTimeOffset.UtcNow; - var inputState = new World(_blockChainStates.GetWorldState(ev.PreviousState)); - var outputState = new World(_blockChainStates.GetWorldState(ev.OutputState)); - var avatarAddress = grinding.AvatarAddress; - if (!_avatars.Contains(avatarAddress)) - { - _avatars.Add(avatarAddress); - _avatarList.Add(AvatarData.GetAvatarInfo(outputState, ev.Signer, avatarAddress, _blockTimeOffset, BattleType.Adventure)); - } - - var grindList = GrindingData.GetGrindingInfo(inputState, outputState, ev.Signer, grinding.AvatarAddress, grinding.EquipmentIds, grinding.Id, ev.BlockIndex, _blockTimeOffset); - - foreach (var grind in grindList) - { - _grindList.Add(grind); - } - - var end = DateTimeOffset.UtcNow; - Log.Debug("[DataProvider] Stored Grinding action in block #{index}. Time Taken: {time} ms.", ev.BlockIndex, (end - start).Milliseconds); - } - } - catch (Exception ex) - { - Log.Error(ex, "[DataProvider] RenderSubscriber Error: {ErrorMessage}, StackTrace: {StackTrace}", ex.Message, ex.StackTrace); - } - }); - _actionRenderer.EveryRender() .Subscribe(ev => { @@ -1407,42 +1372,6 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) } }); - _actionRenderer.EveryRender() - .Subscribe(ev => - { - try - { - if (ev.Exception == null && ev.Action is { } rapidCombination) - { - var start = DateTimeOffset.UtcNow; - var inputState = new World(_blockChainStates.GetWorldState(ev.PreviousState)); - var outputState = new World(_blockChainStates.GetWorldState(ev.OutputState)); - var avatarAddress = rapidCombination.avatarAddress; - if (!_avatars.Contains(avatarAddress)) - { - _avatars.Add(avatarAddress); - _avatarList.Add(AvatarData.GetAvatarInfo(outputState, ev.Signer, avatarAddress, _blockTimeOffset, BattleType.Adventure)); - } - - _rapidCombinationList.Add(RapidCombinationData.GetRapidCombinationInfo( - inputState, - outputState, - ev.Signer, - rapidCombination.avatarAddress, - rapidCombination.slotIndex, - rapidCombination.Id, - ev.BlockIndex, - _blockTimeOffset)); - var end = DateTimeOffset.UtcNow; - Log.Debug("[DataProvider] Stored RapidCombination action in block #{index}. Time Taken: {time} ms.", ev.BlockIndex, (end - start).Milliseconds); - } - } - catch (Exception ex) - { - Log.Error(ex, "[DataProvider] RenderSubscriber Error: {ErrorMessage}, StackTrace: {StackTrace}", ex.Message, ex.StackTrace); - } - }); - _actionRenderer.EveryRender() .Subscribe(ev => { @@ -1591,7 +1520,7 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) auraSummon.Id, ev.BlockIndex, _blockTimeOffset - )); + )); } else { @@ -1726,6 +1655,14 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) _actionRenderer.EveryRender().Subscribe(SubscribeAdventureBossClaim); /* Adventure Boss */ + // Crafting + _actionRenderer.EveryRender().Subscribe(SubscribeRapidCombination); + _actionRenderer.EveryRender().Subscribe(SubscribeCustomEquipmentCraft); + _actionRenderer.EveryRender().Subscribe(SubscribeUnlockCombinationSlot); + + // Grinding + _actionRenderer.EveryRender().Subscribe(SubscribeGrinding); + return Task.CompletedTask; } @@ -1740,7 +1677,17 @@ protected override Task ExecuteAsync(CancellationToken stoppingToken) partial void SubscribeAdventureBossUnlockFloor(ActionEvaluation evt); partial void SubscribeAdventureBossClaim(ActionEvaluation evt); + /** Adventure Boss **/ + //// Cafting + partial void SubscribeRapidCombination(ActionEvaluation ev); + + partial void SubscribeCustomEquipmentCraft(ActionEvaluation evt); + + partial void SubscribeUnlockCombinationSlot(ActionEvaluation evt); + + //// Grinding + partial void SubscribeGrinding(ActionEvaluation ev); /* Partial Methods */ private void AddShopHistoryItem(ITradableItem orderItem, Address buyerAvatarAddress, PurchaseInfo purchaseInfo, int itemCount, long blockIndex) @@ -1847,7 +1794,6 @@ private void StoreRenderedData((Block OldTip, Block NewTip) b) MySqlStore.StoreStakingList(_stakeList); MySqlStore.StoreClaimStakeRewardList(_claimStakeList); MySqlStore.StoreMigrateMonsterCollectionList(_mmcList); - MySqlStore.StoreGrindList(_grindList); MySqlStore.StoreItemEnhancementFailList(_itemEnhancementFailList); MySqlStore.StoreUnlockEquipmentRecipeList(_unlockEquipmentRecipeList); MySqlStore.StoreUnlockWorldList(_unlockWorldList); @@ -1867,7 +1813,6 @@ private void StoreRenderedData((Block OldTip, Block NewTip) b) MySqlStore.StoreRuneEnhancementList(_runeEnhancementList); MySqlStore.StoreRunesAcquiredList(_runesAcquiredList); MySqlStore.StoreUnlockRuneSlotList(_unlockRuneSlotList); - MySqlStore.StoreRapidCombinationList(_rapidCombinationList); MySqlStore.StorePetEnhancementList(_petEnhancementList); MySqlStore.StoreTransferAssetList(_transferAssetList); MySqlStore.StoreRequestPledgeList(_requestPledgeList); @@ -1877,6 +1822,8 @@ private void StoreRenderedData((Block OldTip, Block NewTip) b) MySqlStore.StoreRuneSummonList(_runeSummonList); MySqlStore.StoreRuneSummonFailList(_runeSummonFailList); StoreAdventureBossList(); + StoreCraftingData(); + StoreGrindList(); }), }; @@ -1899,7 +1846,6 @@ private void StoreRenderedData((Block OldTip, Block NewTip) b) _stakeList.Clear(); _claimStakeList.Clear(); _mmcList.Clear(); - _grindList.Clear(); _itemEnhancementFailList.Clear(); _unlockEquipmentRecipeList.Clear(); _unlockWorldList.Clear(); @@ -1919,7 +1865,6 @@ private void StoreRenderedData((Block OldTip, Block NewTip) b) _runeEnhancementList.Clear(); _runesAcquiredList.Clear(); _unlockRuneSlotList.Clear(); - _rapidCombinationList.Clear(); _petEnhancementList.Clear(); _transferAssetList.Clear(); _requestPledgeList.Clear(); @@ -1927,6 +1872,8 @@ private void StoreRenderedData((Block OldTip, Block NewTip) b) _auraSummonList.Clear(); _auraSummonFailList.Clear(); ClearAdventureBossList(); + ClearCraftingList(); + ClearGrindList(); var end = DateTimeOffset.Now; long blockIndex = b.OldTip.Index; diff --git a/NineChronicles.DataProvider/Store/Models/Base/BaseModel.cs b/NineChronicles.DataProvider/Store/Models/Base/BaseModel.cs new file mode 100644 index 00000000..5232a587 --- /dev/null +++ b/NineChronicles.DataProvider/Store/Models/Base/BaseModel.cs @@ -0,0 +1,21 @@ +namespace NineChronicles.DataProvider.Store.Models +{ + using System; + using System.ComponentModel.DataAnnotations; + + public abstract class BaseModel + { + [Key] + public string? Id { get; set; } + + public long BlockIndex { get; set; } + + public string? AgentAddress { get; set; } + + public AgentModel? Agent { get; set; } + + public DateOnly Date { get; set; } + + public DateTimeOffset TimeStamp { get; set; } + } +} diff --git a/NineChronicles.DataProvider/Store/Models/Base/IAvatar.cs b/NineChronicles.DataProvider/Store/Models/Base/IAvatar.cs new file mode 100644 index 00000000..78339d11 --- /dev/null +++ b/NineChronicles.DataProvider/Store/Models/Base/IAvatar.cs @@ -0,0 +1,9 @@ +namespace NineChronicles.DataProvider.Store.Models +{ + public interface IAvatar + { + string? AvatarAddress { get; set; } + + AvatarModel? Avatar { get; set; } + } +} diff --git a/NineChronicles.DataProvider/Store/Models/Crafting/CustomEquipmentCraftCountModel.cs b/NineChronicles.DataProvider/Store/Models/Crafting/CustomEquipmentCraftCountModel.cs new file mode 100644 index 00000000..66e33ced --- /dev/null +++ b/NineChronicles.DataProvider/Store/Models/Crafting/CustomEquipmentCraftCountModel.cs @@ -0,0 +1,14 @@ +namespace NineChronicles.DataProvider.Store.Models.Crafting +{ + using System.ComponentModel.DataAnnotations; + + public class CustomEquipmentCraftCountModel + { + [Key] + public int IconId { get; set; } + + public string? ItemSubType { get; set; } + + public long Count { get; set; } + } +} diff --git a/NineChronicles.DataProvider/Store/Models/Crafting/CustomEquipmentCraftModel.cs b/NineChronicles.DataProvider/Store/Models/Crafting/CustomEquipmentCraftModel.cs new file mode 100644 index 00000000..d951b735 --- /dev/null +++ b/NineChronicles.DataProvider/Store/Models/Crafting/CustomEquipmentCraftModel.cs @@ -0,0 +1,59 @@ +namespace NineChronicles.DataProvider.Store.Models.Crafting +{ + using System; + using System.ComponentModel.DataAnnotations; + + public class CustomEquipmentCraftModel + { + [Key] + public string? Id { get; set; } + + // Common + public long BlockIndex { get; set; } + + public string? AgentAddress { get; set; } + + public AgentModel? Agent { get; set; } + + public string? AvatarAddress { get; set; } + + public AvatarModel? Avatar { get; set; } + + // Input + public int SlotIndex { get; set; } + + public int RecipeId { get; set; } + + public int Relationship { get; set; } + + public int Scroll { get; set; } + + public int Circle { get; set; } + + public decimal NcgCost { get; set; } + + public string? AdditionalCost { get; set; } + + // Result + public int EquipmentItemId { get; set; } + + public string? ItemSubType { get; set; } + + public string? ElementalType { get; set; } + + public int IconId { get; set; } + + public long TotalCP { get; set; } + + public int OptionId { get; set; } + + public bool CraftWithRandom { get; set; } + + public bool HasRandomOnlyIcon { get; set; } + + // Time + public DateOnly Date { get; set; } + + public DateTimeOffset TimeStamp { get; set; } + } +} diff --git a/NineChronicles.DataProvider/Store/Models/RapidCombinationModel.cs b/NineChronicles.DataProvider/Store/Models/Crafting/RapidCombinationModel.cs similarity index 91% rename from NineChronicles.DataProvider/Store/Models/RapidCombinationModel.cs rename to NineChronicles.DataProvider/Store/Models/Crafting/RapidCombinationModel.cs index a20ca622..f01929fb 100644 --- a/NineChronicles.DataProvider/Store/Models/RapidCombinationModel.cs +++ b/NineChronicles.DataProvider/Store/Models/Crafting/RapidCombinationModel.cs @@ -1,11 +1,10 @@ -namespace NineChronicles.DataProvider.Store.Models +namespace NineChronicles.DataProvider.Store.Models.Crafting { using System; using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; [Index(nameof(Date))] - public class RapidCombinationModel { [Key] diff --git a/NineChronicles.DataProvider/Store/Models/Crafting/UnlockCombinationSlotModel.cs b/NineChronicles.DataProvider/Store/Models/Crafting/UnlockCombinationSlotModel.cs new file mode 100644 index 00000000..c1dd1e6b --- /dev/null +++ b/NineChronicles.DataProvider/Store/Models/Crafting/UnlockCombinationSlotModel.cs @@ -0,0 +1,17 @@ +namespace NineChronicles.DataProvider.Store.Models.Crafting +{ + public class UnlockCombinationSlotModel : BaseModel, IAvatar + { + public string? AvatarAddress { get; set; } + + public AvatarModel? Avatar { get; set; } + + public int SlotIndex { get; set; } + + public decimal NcgCost { get; set; } + + public decimal CrystalCost { get; set; } + + public string? MaterialCosts { get; set; } + } +} diff --git a/NineChronicles.DataProvider/Store/Models/GrindingModel.cs b/NineChronicles.DataProvider/Store/Models/Grinding/GrindingModel.cs similarity index 87% rename from NineChronicles.DataProvider/Store/Models/GrindingModel.cs rename to NineChronicles.DataProvider/Store/Models/Grinding/GrindingModel.cs index 90658abf..55aae778 100644 --- a/NineChronicles.DataProvider/Store/Models/GrindingModel.cs +++ b/NineChronicles.DataProvider/Store/Models/Grinding/GrindingModel.cs @@ -1,11 +1,10 @@ -namespace NineChronicles.DataProvider.Store.Models +namespace NineChronicles.DataProvider.Store.Models.Grinding { using System; using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; [Index(nameof(Date))] - public class GrindingModel { [Key] @@ -29,6 +28,8 @@ public class GrindingModel public decimal Crystal { get; set; } + public string? Materials { get; set; } + public DateOnly Date { get; set; } public DateTimeOffset TimeStamp { get; set; } diff --git a/NineChronicles.DataProvider/Store/MySql/CraftingStore.cs b/NineChronicles.DataProvider/Store/MySql/CraftingStore.cs new file mode 100644 index 00000000..aa005082 --- /dev/null +++ b/NineChronicles.DataProvider/Store/MySql/CraftingStore.cs @@ -0,0 +1,163 @@ +namespace NineChronicles.DataProvider.Store +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using Microsoft.EntityFrameworkCore; + using NineChronicles.DataProvider.Store.Models.Crafting; + using Serilog; + + /// + /// Store functions related to crafting. + /// - RapidCombination + /// - CustomEquipmentCraft + /// and so on. + /// + public partial class MySqlStore + { + // RapidCombination + public async partial Task StoreRapidCombinationList(List rapidCombinationList) + { + NineChroniclesContext? ctx = null; + try + { + ctx = await _dbContextFactory.CreateDbContextAsync(); + + foreach (var rc in rapidCombinationList) + { + if (!await ctx.RapidCombinations.AnyAsync(r => r.Id == rc.Id)) + { + await ctx.RapidCombinations.AddAsync(rc); + } + } + + await ctx.SaveChangesAsync(); + Log.Debug($"[RapidCombination] {rapidCombinationList.Count} RapidCombinations saved."); + } + catch (Exception e) + { + Log.Debug(e.Message); + Log.Debug(e.StackTrace); + } + finally + { + if (ctx is not null) + { + await ctx.DisposeAsync(); + } + } + } + + // CustomEquipmentCraft + public async partial Task StoreCustomEquipmentCraftList( + List customEquipmentCraftList + ) + { + NineChroniclesContext? ctx = null; + try + { + ctx = await _dbContextFactory.CreateDbContextAsync(); + + // This is for count update + var iconCraftCountDict = new Dictionary<(string, int), int>(); + + // Add new CustomCraft data + foreach (var craftData in customEquipmentCraftList) + { + if (!await ctx.CustomEquipmentCraft.AnyAsync(c => c.Id == craftData.Id)) + { + if (iconCraftCountDict.ContainsKey((craftData.ItemSubType!, craftData.IconId))) + { + iconCraftCountDict[(craftData.ItemSubType!, craftData.IconId)]++; + } + else + { + iconCraftCountDict[(craftData.ItemSubType!, craftData.IconId)] = 1; + } + + await ctx.CustomEquipmentCraft.AddAsync(craftData); + } + } + + // Upsert CustomCraft count + foreach (var ((itemSubType, iconId), count) in iconCraftCountDict) + { + var countData = await ctx.CustomEquipmentCraftCount.FirstOrDefaultAsync(c => c.IconId == iconId); + if (countData is null) + { + await ctx.CustomEquipmentCraftCount.AddAsync(new CustomEquipmentCraftCountModel + { + IconId = iconId, + ItemSubType = itemSubType, + Count = count, + }); + } + else + { + countData.Count += count; + ctx.Update(countData); + } + } + + await ctx.SaveChangesAsync(); + Log.Debug($"[CustomEquipmentCraft] {customEquipmentCraftList.Count} CustomEquipmentCraft saved."); + } + catch (Exception e) + { + Log.Debug(e.Message); + Log.Debug(e.StackTrace); + } + finally + { + if (ctx is not null) + { + await ctx.DisposeAsync(); + } + } + } + + public partial List GetCustomEquipmentCraftCount(string? itemSubType) + { + using var ctx = _dbContextFactory.CreateDbContext(); + return itemSubType is null + ? ctx.CustomEquipmentCraftCount.ToList() + : ctx.CustomEquipmentCraftCount.Where(c => c.ItemSubType == itemSubType).ToList(); + } + + // UnlockCombinationSlot + public async partial Task StoreUnlockCombinationSlotList( + List unlockCombinationSlotList + ) + { + NineChroniclesContext? ctx = null; + try + { + ctx = await _dbContextFactory.CreateDbContextAsync(); + + foreach (var ucs in unlockCombinationSlotList) + { + if (!await ctx.UnlockCombinationSlot.AnyAsync(u => u.Id == ucs.Id)) + { + await ctx.UnlockCombinationSlot.AddAsync(ucs); + } + } + + await ctx.SaveChangesAsync(); + Log.Debug($"[UnlockCombinationSlot] {unlockCombinationSlotList.Count} UnlockCombinationSlot saved."); + } + catch (Exception e) + { + Log.Debug(e.Message); + Log.Debug(e.StackTrace); + } + finally + { + if (ctx is not null) + { + await ctx.DisposeAsync(); + } + } + } + } +} diff --git a/NineChronicles.DataProvider/Store/MySql/GrindingStore.cs b/NineChronicles.DataProvider/Store/MySql/GrindingStore.cs new file mode 100644 index 00000000..cb00e755 --- /dev/null +++ b/NineChronicles.DataProvider/Store/MySql/GrindingStore.cs @@ -0,0 +1,46 @@ +// Refactor: Move MySqlStore.cs to MySql and make all namespaces to NineChronicles.dataProvider.MySqlStore + +namespace NineChronicles.DataProvider.Store +{ + using System; + using System.Collections.Generic; + using System.Threading.Tasks; + using Microsoft.EntityFrameworkCore; + using NineChronicles.DataProvider.Store.Models.Grinding; + using Serilog; + + public partial class MySqlStore + { + public async partial Task StoreGrindList(List grindingList) + { + NineChroniclesContext? ctx = null; + try + { + ctx = await _dbContextFactory.CreateDbContextAsync(); + + foreach (var grind in grindingList) + { + if (await ctx.Grindings!.FirstOrDefaultAsync(g => g.Id == grind.Id) is null) + { + await ctx.Grindings!.AddRangeAsync(grind); + } + } + + await ctx.SaveChangesAsync(); + Log.Debug($"[Grinding] {grindingList.Count} grind saved"); + } + catch (Exception e) + { + Log.Debug(e.Message); + Log.Debug(e.StackTrace); + } + finally + { + if (ctx is not null) + { + await ctx.DisposeAsync(); + } + } + } + } +} diff --git a/NineChronicles.DataProvider/Store/MySqlStore.cs b/NineChronicles.DataProvider/Store/MySqlStore.cs index d8b429d2..0bc43473 100644 --- a/NineChronicles.DataProvider/Store/MySqlStore.cs +++ b/NineChronicles.DataProvider/Store/MySqlStore.cs @@ -9,6 +9,8 @@ namespace NineChronicles.DataProvider.Store using Nekoyume.Model.Item; using NineChronicles.DataProvider.Store.Models; using NineChronicles.DataProvider.Store.Models.AdventureBoss; + using NineChronicles.DataProvider.Store.Models.Crafting; + using NineChronicles.DataProvider.Store.Models.Grinding; using Serilog; public partial class MySqlStore @@ -1135,41 +1137,6 @@ public void StoreMigrateMonsterCollectionList( } } - public void StoreGrindList(List grindList) - { - try - { - var tasks = new List(); - foreach (var grind in grindList) - { - tasks.Add(Task.Run(async () => - { - await using NineChroniclesContext ctx = await _dbContextFactory.CreateDbContextAsync(); - if (ctx.Grindings?.FindAsync(grind.Id).Result is null) - { - await ctx.Grindings!.AddRangeAsync(grind); - await ctx.SaveChangesAsync(); - await ctx.DisposeAsync(); - } - else - { - await ctx.DisposeAsync(); - await using NineChroniclesContext updateCtx = await _dbContextFactory.CreateDbContextAsync(); - updateCtx.Grindings!.UpdateRange(grind); - await updateCtx.SaveChangesAsync(); - await updateCtx.DisposeAsync(); - } - })); - } - - Task.WaitAll(tasks.ToArray()); - } - catch (Exception e) - { - Log.Debug(e.Message); - } - } - public void StoreItemEnhancementFailList(List itemEnhancementFailList) { try @@ -1767,41 +1734,6 @@ public void StoreUnlockRuneSlotList(List unlockRuneSlotList } } - public void StoreRapidCombinationList(List rapidCombinationList) - { - try - { - var tasks = new List(); - foreach (var rapidCombination in rapidCombinationList) - { - tasks.Add(Task.Run(async () => - { - await using NineChroniclesContext ctx = await _dbContextFactory.CreateDbContextAsync(); - if (ctx.RapidCombinations.FindAsync(rapidCombination.Id).Result is null) - { - await ctx.RapidCombinations.AddRangeAsync(rapidCombination); - await ctx.SaveChangesAsync(); - await ctx.DisposeAsync(); - } - else - { - await ctx.DisposeAsync(); - await using NineChroniclesContext updateCtx = await _dbContextFactory.CreateDbContextAsync(); - updateCtx.RapidCombinations.UpdateRange(rapidCombination); - await updateCtx.SaveChangesAsync(); - await updateCtx.DisposeAsync(); - } - })); - } - - Task.WaitAll(tasks.ToArray()); - } - catch (Exception e) - { - Log.Debug(e.Message); - } - } - public void StoreAuraSummonList(List auraSummonList) { try @@ -1956,6 +1888,18 @@ public void StoreRuneSummonFailList(List runeSummonFailList public partial Task StoreAdventureBossClaimRewardList(List claimList); /* Adventure Boss */ + // CustomCraft + public partial Task StoreCustomEquipmentCraftList(List customEquipmentCraftList); + + public partial List GetCustomEquipmentCraftCount(string? itemSubType); + + /* CustomCraft */ + public partial Task StoreRapidCombinationList(List rapidCombinationList); + + public partial Task StoreGrindList(List grindingList); + + public partial Task StoreUnlockCombinationSlotList(List unlockCombinationSlotList); + public List GetRaiderList() { using NineChroniclesContext ctx = _dbContextFactory.CreateDbContext(); diff --git a/NineChronicles.DataProvider/Store/NineChroniclesContext.cs b/NineChronicles.DataProvider/Store/NineChroniclesContext.cs index 20b4b6bc..09c9f371 100644 --- a/NineChronicles.DataProvider/Store/NineChroniclesContext.cs +++ b/NineChronicles.DataProvider/Store/NineChroniclesContext.cs @@ -3,6 +3,8 @@ namespace NineChronicles.DataProvider.Store using Microsoft.EntityFrameworkCore; using NineChronicles.DataProvider.Store.Models; using NineChronicles.DataProvider.Store.Models.AdventureBoss; + using NineChronicles.DataProvider.Store.Models.Crafting; + using NineChronicles.DataProvider.Store.Models.Grinding; public sealed class NineChroniclesContext : DbContext { @@ -219,6 +221,15 @@ public NineChroniclesContext(DbContextOptions options) public DbSet AdventureBossClaimReward => Set(); /* Adventure Boss */ + // CustomCraft + public DbSet CustomEquipmentCraft => Set(); + + public DbSet CustomEquipmentCraftCount => Set(); + /* CustomCraft */ + + // UnlockCombinationSlot + public DbSet UnlockCombinationSlot => Set(); + // Table for daily metrics data public DbSet DailyMetrics => Set(); diff --git a/NineChronicles.DataProvider/Subscriber/AdventureBossRenderSubscriber.cs b/NineChronicles.DataProvider/Subscriber/AdventureBossRenderSubscriber.cs index 7bdc809a..d5500aa6 100644 --- a/NineChronicles.DataProvider/Subscriber/AdventureBossRenderSubscriber.cs +++ b/NineChronicles.DataProvider/Subscriber/AdventureBossRenderSubscriber.cs @@ -9,9 +9,7 @@ namespace NineChronicles.DataProvider using Lib9c.Renderers; using Libplanet.Action.State; using Nekoyume.Action.AdventureBoss; - using Nekoyume.Model.EnumType; using Nekoyume.Module; - using NineChronicles.DataProvider.DataRendering; using NineChronicles.DataProvider.DataRendering.AdventureBoss; using NineChronicles.DataProvider.Store.Models.AdventureBoss; using Serilog; diff --git a/NineChronicles.DataProvider/Subscriber/CraftingRenderSubscriber.cs b/NineChronicles.DataProvider/Subscriber/CraftingRenderSubscriber.cs new file mode 100644 index 00000000..5f2bfb8d --- /dev/null +++ b/NineChronicles.DataProvider/Subscriber/CraftingRenderSubscriber.cs @@ -0,0 +1,206 @@ +namespace NineChronicles.DataProvider +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + using Lib9c.Renderers; + using Libplanet.Action.State; + using Nekoyume.Action; + using Nekoyume.Action.CustomEquipmentCraft; + using Nekoyume.Model.EnumType; + using NineChronicles.DataProvider.DataRendering; + using NineChronicles.DataProvider.DataRendering.Crafting; + using NineChronicles.DataProvider.Store.Models.Crafting; + using Serilog; + + public partial class RenderSubscriber + { + private List _rapidCombinationList = new (); + private List _customEquipmentCraftList = new (); + private List _unlockCombinationSlotList = new (); + + // Store + private void StoreCraftingData() + { + try + { + var tasks = new List(); + + // RapidCombination + Log.Debug("[Crafting] Store RapidCombination list"); + tasks.Add(Task.Run(async () => + { + Log.Debug($"[RapidCombination] {_rapidCombinationList.Count}"); + await MySqlStore.StoreRapidCombinationList(_rapidCombinationList); + })); + + // CustomEquipmentCraft + Log.Debug("[Crafting] Store CustomEquipmentCraft list"); + tasks.Add(Task.Run(async () => + { + Log.Debug($"[CustomEquipmentCraft] {_customEquipmentCraftList.Count}"); + await MySqlStore.StoreCustomEquipmentCraftList(_customEquipmentCraftList); + })); + + // UnlockCombinationSlot + Log.Debug("[Crafting] Store UnlockCombinationSlot list"); + tasks.Add(Task.Run(async () => + { + Log.Debug($"[UnlockCombinationSlot] {_unlockCombinationSlotList.Count}"); + await MySqlStore.StoreUnlockCombinationSlotList(_unlockCombinationSlotList); + })); + + Task.WaitAll(tasks.ToArray()); + } + catch (Exception e) + { + Log.Error(e.Message); + } + } + + // Clear + private void ClearCraftingList() + { + Log.Debug("[Crafting] Clear crafting related action data"); + _rapidCombinationList.Clear(); + _customEquipmentCraftList.Clear(); + _unlockCombinationSlotList.Clear(); + } + + // Subscribe + partial void SubscribeRapidCombination(ActionEvaluation ev) + { + try + { + if (ev.Exception == null && ev.Action is { } rapidCombination) + { + var start = DateTimeOffset.UtcNow; + var inputState = new World(_blockChainStates.GetWorldState(ev.PreviousState)); + var outputState = new World(_blockChainStates.GetWorldState(ev.OutputState)); + var avatarAddress = rapidCombination.avatarAddress; + if (!_avatars.Contains(avatarAddress)) + { + _avatars.Add(avatarAddress); + _avatarList.Add( + AvatarData.GetAvatarInfo( + outputState, ev.Signer, avatarAddress, _blockTimeOffset, BattleType.Adventure + ) + ); + } + + _rapidCombinationList = _rapidCombinationList.Concat( + RapidCombinationData.GetRapidCombinationInfo( + inputState, + ev.Signer, + rapidCombination.avatarAddress, + rapidCombination.slotIndexList, + rapidCombination.Id, + ev.BlockIndex, + _blockTimeOffset) + ).ToList(); + var end = DateTimeOffset.UtcNow; + Log.Debug( + "[DataProvider] Stored RapidCombination action in block #{index}. Time Taken: {time} ms.", + ev.BlockIndex, + (end - start).Milliseconds + ); + } + } + catch (Exception ex) + { + Log.Error( + ex, + "[DataProvider] RenderSubscriber Error: {ErrorMessage}, StackTrace: {StackTrace}", + ex.Message, + ex.StackTrace + ); + } + } + + partial void SubscribeCustomEquipmentCraft(ActionEvaluation evt) + { + try + { + if (evt.Exception == null && evt.Action is { } customEquipmentCraft) + { + var start = DateTimeOffset.UtcNow; + var prevState = new World(_blockChainStates.GetWorldState(evt.PreviousState)); + var outputState = new World(_blockChainStates.GetWorldState(evt.OutputState)); + var avatarAddress = customEquipmentCraft.AvatarAddress; + + if (!_avatars.Contains(avatarAddress)) + { + _avatars.Add(avatarAddress); + _avatarList.Add( + AvatarData.GetAvatarInfo( + outputState, evt.Signer, avatarAddress, _blockTimeOffset, BattleType.Adventure + ) + ); + } + + var actionId = Guid.NewGuid(); + _customEquipmentCraftList = _customEquipmentCraftList.Concat( + CustomEquipmentCraftData.GetCustomEquipmentCraftInfo( + prevState, + outputState, + new ReplayRandom(evt.RandomSeed), + evt.Signer, + actionId, + customEquipmentCraft, + evt.BlockIndex, + _blockTimeOffset + ) + ).ToList(); + Log.Debug( + "[DataProvider] Stored CustomEquipmentCraft action in block #{index}. Time Taken: {time} ms.", + evt.BlockIndex, + (DateTimeOffset.UtcNow - start).Milliseconds + ); + } + } + catch (Exception e) + { + Log.Error( + e, + "[DataProvider] RenderSubscriber Error: {ErrorMessage}, StackTrace: {StackTrace}", + e.Message, + e.StackTrace + ); + } + } + + partial void SubscribeUnlockCombinationSlot(ActionEvaluation evt) + { + try + { + if (evt.Exception is null && evt.Action is { } unlockCombinationSlot) + { + var start = DateTimeOffset.UtcNow; + _unlockCombinationSlotList.Add(UnlockCombinationSlotData.GetUnlockCombinationSlotInfo( + new World(_blockChainStates.GetWorldState(evt.PreviousState)), + evt.Signer, + evt.Action, + evt.BlockIndex, + _blockTimeOffset + )); + + Log.Debug( + "[DataProvider] Stored RapidCombination action in block #{index}. Time Taken: {time} ms.", + evt.BlockIndex, + (DateTimeOffset.UtcNow - start).Milliseconds + ); + } + } + catch (Exception e) + { + Log.Error( + e, + "[DataProvider] RenderSubscriber Error: {ErrorMessage}, StackTrace: {StackTrace}", + e.Message, + e.StackTrace + ); + } + } + } +} diff --git a/NineChronicles.DataProvider/Subscriber/GrindingRenderSubscriber.cs b/NineChronicles.DataProvider/Subscriber/GrindingRenderSubscriber.cs new file mode 100644 index 00000000..3b9e197f --- /dev/null +++ b/NineChronicles.DataProvider/Subscriber/GrindingRenderSubscriber.cs @@ -0,0 +1,99 @@ +namespace NineChronicles.DataProvider +{ + using System; + using System.Collections.Generic; + using System.Threading.Tasks; + using Lib9c.Renderers; + using Libplanet.Action.State; + using Nekoyume.Action; + using Nekoyume.Model.EnumType; + using NineChronicles.DataProvider.DataRendering; + using NineChronicles.DataProvider.DataRendering.Grinding; + using NineChronicles.DataProvider.Store.Models.Grinding; + using Serilog; + + public partial class RenderSubscriber + { + private readonly List _grindList = new (); + + public void StoreGrindList() + { + try + { + var tasks = new List(); + Log.Debug("[DataProvider] Store grinding list"); + + tasks.Add(Task.Run(async () => + { + Log.Debug($"[Grinding] {_grindList.Count} Grindings"); + await MySqlStore.StoreGrindList(_grindList); + } + )); + + Task.WaitAll(tasks.ToArray()); + } + catch (Exception e) + { + Log.Debug(e.Message); + } + } + + partial void SubscribeGrinding(ActionEvaluation ev) + { + try + { + if (ev.Exception is null && ev.Action is { } grinding) + { + var start = DateTimeOffset.UtcNow; + var inputState = new World(_blockChainStates.GetWorldState(ev.PreviousState)); + var outputState = new World(_blockChainStates.GetWorldState(ev.OutputState)); + var avatarAddress = grinding.AvatarAddress; + if (!_avatars.Contains(avatarAddress)) + { + _avatars.Add(avatarAddress); + _avatarList.Add(AvatarData.GetAvatarInfo( + outputState, ev.Signer, avatarAddress, _blockTimeOffset, BattleType.Adventure + )); + } + + var grindList = GrindingData.GetGrindingInfo( + inputState, + ev.Signer, + grinding.AvatarAddress, + grinding.EquipmentIds, + grinding.Id, + ev.BlockIndex, + _blockTimeOffset + ); + + foreach (var grind in grindList) + { + _grindList.Add(grind); + } + + var end = DateTimeOffset.UtcNow; + Log.Debug( + "[DataProvider] Stored Grinding action in block #{index}. Time Taken: {time} ms.", + ev.BlockIndex, + (end - start).Milliseconds + ); + } + } + catch (Exception ex) + { + Log.Error( + ex, + "[DataProvider] RenderSubscriber Error: {ErrorMessage}, StackTrace: {StackTrace}", + ex.Message, + ex.StackTrace + ); + } + } + + private void ClearGrindList() + { + Log.Debug("[Grinding] Clear grind list"); + _grindList.Clear(); + } + } +} diff --git a/NineChronicles.Headless b/NineChronicles.Headless index 8d3df2ad..97965e0e 160000 --- a/NineChronicles.Headless +++ b/NineChronicles.Headless @@ -1 +1 @@ -Subproject commit 8d3df2ada4b9ed38b8d94a228286d6050b933ea8 +Subproject commit 97965e0ef05535d0e3103760bcf9d01cef57459f