Seeding updated
This commit is contained in:
34506
SVSim.Database/Migrations/20260523200820_ProdContentTables.Designer.cs
generated
Normal file
34506
SVSim.Database/Migrations/20260523200820_ProdContentTables.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
489
SVSim.Database/Migrations/20260523200820_ProdContentTables.cs
Normal file
489
SVSim.Database/Migrations/20260523200820_ProdContentTables.cs
Normal file
@@ -0,0 +1,489 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace SVSim.Database.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class ProdContentTables : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "CardSetIdForResourceDlView",
|
||||
table: "GameConfigurations",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 0);
|
||||
|
||||
migrationBuilder.AddColumn<long>(
|
||||
name: "ChallengeTwoPickSleeveId",
|
||||
table: "GameConfigurations",
|
||||
type: "bigint",
|
||||
nullable: false,
|
||||
defaultValue: 0L);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "ChallengeUseTwoPickPremiumCard",
|
||||
table: "GameConfigurations",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IsBattlePassPeriod",
|
||||
table: "GameConfigurations",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IsBeginnerMission",
|
||||
table: "GameConfigurations",
|
||||
type: "boolean",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "TsRotationId",
|
||||
table: "GameConfigurations",
|
||||
type: "text",
|
||||
nullable: false,
|
||||
defaultValue: "");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ArenaSeasons",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
Mode = table.Column<int>(type: "integer", nullable: false),
|
||||
Enable = table.Column<int>(type: "integer", nullable: false),
|
||||
Cost = table.Column<decimal>(type: "numeric(20,0)", nullable: false),
|
||||
RupyCost = table.Column<decimal>(type: "numeric(20,0)", nullable: false),
|
||||
TicketCost = table.Column<int>(type: "integer", nullable: false),
|
||||
IsJoin = table.Column<bool>(type: "boolean", nullable: false),
|
||||
FormatInfo = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ArenaSeasons", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "AvatarAbilities",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
LeaderSkinId = table.Column<int>(type: "integer", nullable: false),
|
||||
BattleStartFirstPlayerTurnBp = table.Column<int>(type: "integer", nullable: false),
|
||||
BattleStartSecondPlayerTurnBp = table.Column<int>(type: "integer", nullable: false),
|
||||
BattleStartMaxLife = table.Column<int>(type: "integer", nullable: false),
|
||||
AbilityCost = table.Column<string>(type: "text", nullable: false),
|
||||
Ability = table.Column<string>(type: "text", nullable: false),
|
||||
PassiveAbility = table.Column<string>(type: "text", nullable: false),
|
||||
AbilityDesc = table.Column<string>(type: "text", nullable: false),
|
||||
PassiveAbilityDesc = table.Column<string>(type: "text", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_AvatarAbilities", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Banners",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
ImageName = table.Column<string>(type: "text", nullable: false),
|
||||
Click = table.Column<string>(type: "text", nullable: false),
|
||||
Status = table.Column<string>(type: "text", nullable: false),
|
||||
ChangeTime = table.Column<int>(type: "integer", nullable: false),
|
||||
RemainingTime = table.Column<int>(type: "integer", nullable: false),
|
||||
ImagePaths = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Banners", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "BattlePassLevels",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
Level = table.Column<int>(type: "integer", nullable: false),
|
||||
RewardData = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_BattlePassLevels", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Colosseums",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
ColosseumId = table.Column<string>(type: "text", nullable: false),
|
||||
ColosseumName = table.Column<string>(type: "text", nullable: false),
|
||||
CardPoolName = table.Column<string>(type: "text", nullable: false),
|
||||
DeckFormat = table.Column<string>(type: "text", nullable: false),
|
||||
StartTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
EndTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
NowRound = table.Column<string>(type: "text", nullable: false),
|
||||
IsDisplayTips = table.Column<string>(type: "text", nullable: false),
|
||||
TipsId = table.Column<string>(type: "text", nullable: false),
|
||||
IsColosseumPeriod = table.Column<bool>(type: "boolean", nullable: false),
|
||||
IsRoundPeriod = table.Column<bool>(type: "boolean", nullable: false),
|
||||
IsNormalTwoPick = table.Column<string>(type: "text", nullable: false),
|
||||
IsSpecialMode = table.Column<string>(type: "text", nullable: false),
|
||||
IsAllCardEnabled = table.Column<int>(type: "integer", nullable: false),
|
||||
SalesPeriodInfo = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Colosseums", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "DailyLoginBonuses",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
BonusId = table.Column<int>(type: "integer", nullable: false),
|
||||
BonusData = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_DailyLoginBonuses", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "DefaultDecks",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
DeckNo = table.Column<int>(type: "integer", nullable: false),
|
||||
ClassId = table.Column<int>(type: "integer", nullable: false),
|
||||
SleeveId = table.Column<long>(type: "bigint", nullable: false),
|
||||
LeaderSkinId = table.Column<int>(type: "integer", nullable: false),
|
||||
DeckName = table.Column<string>(type: "text", nullable: false),
|
||||
CardIdArray = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_DefaultDecks", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "DefaultLeaderSkinSettings",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
ClassId = table.Column<int>(type: "integer", nullable: false),
|
||||
IsRandomLeaderSkin = table.Column<int>(type: "integer", nullable: false),
|
||||
LeaderSkinId = table.Column<int>(type: "integer", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_DefaultLeaderSkinSettings", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "FeatureMaintenances",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
FeatureKey = table.Column<string>(type: "text", nullable: false),
|
||||
Data = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_FeatureMaintenances", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "LoadingExclusionCards",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<long>(type: "bigint", nullable: false),
|
||||
CardId = table.Column<long>(type: "bigint", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_LoadingExclusionCards", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "MaintenanceCards",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<long>(type: "bigint", nullable: false),
|
||||
CardId = table.Column<long>(type: "bigint", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_MaintenanceCards", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "MasterPointRankingPeriods",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
PeriodNum = table.Column<int>(type: "integer", nullable: false),
|
||||
NecessaryScore = table.Column<long>(type: "bigint", nullable: false),
|
||||
BeginTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
EndTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_MasterPointRankingPeriods", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "MyRotationAbilities",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
AbilityId = table.Column<int>(type: "integer", nullable: false),
|
||||
Data = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_MyRotationAbilities", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "MyRotationSettings",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
RotationId = table.Column<int>(type: "integer", nullable: false),
|
||||
CardSetIdsCsv = table.Column<string>(type: "text", nullable: false),
|
||||
AbilitiesCsv = table.Column<string>(type: "text", nullable: false),
|
||||
ReprintedCardIds = table.Column<string>(type: "jsonb", nullable: false),
|
||||
RestrictedCardIds = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_MyRotationSettings", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "PreReleaseInfos",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
PreReleaseId = table.Column<string>(type: "text", nullable: false),
|
||||
NextCardSetId = table.Column<string>(type: "text", nullable: false),
|
||||
StartTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
EndTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DisplayEndTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
FreeMatchStartTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
CardMasterId = table.Column<int>(type: "integer", nullable: false),
|
||||
DefaultCardMasterId = table.Column<string>(type: "text", nullable: false),
|
||||
PreReleaseCardMasterId = table.Column<string>(type: "text", nullable: false),
|
||||
IsPreRotationFreeMatchTerm = table.Column<bool>(type: "boolean", nullable: false),
|
||||
RotationCardSetIdList = table.Column<string>(type: "jsonb", nullable: false),
|
||||
ReprintedBaseCardIds = table.Column<string>(type: "jsonb", nullable: false),
|
||||
LatestReprintedBaseCardIds = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_PreReleaseInfos", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ReprintedCards",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<long>(type: "bigint", nullable: false),
|
||||
CardId = table.Column<long>(type: "bigint", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ReprintedCards", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "SealedSeasons",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false),
|
||||
Enable = table.Column<int>(type: "integer", nullable: false),
|
||||
CrystalCost = table.Column<int>(type: "integer", nullable: false),
|
||||
RupyCost = table.Column<int>(type: "integer", nullable: false),
|
||||
TicketCost = table.Column<int>(type: "integer", nullable: false),
|
||||
DeckUsingNumMin = table.Column<int>(type: "integer", nullable: false),
|
||||
ScheduleId = table.Column<int>(type: "integer", nullable: false),
|
||||
IsJoin = table.Column<bool>(type: "boolean", nullable: false),
|
||||
IsDeckCodeMaintenance = table.Column<bool>(type: "boolean", nullable: false),
|
||||
PackInfo = table.Column<string>(type: "jsonb", nullable: false),
|
||||
SalesPeriodInfo = table.Column<string>(type: "jsonb", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_SealedSeasons", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "SpotCards",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<long>(type: "bigint", nullable: false),
|
||||
CardId = table.Column<long>(type: "bigint", nullable: false),
|
||||
Cost = table.Column<int>(type: "integer", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_SpotCards", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "UnlimitedRestrictions",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<long>(type: "bigint", nullable: false),
|
||||
CardId = table.Column<long>(type: "bigint", nullable: false),
|
||||
RestrictionValue = table.Column<int>(type: "integer", nullable: false),
|
||||
DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
DateUpdated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_UnlimitedRestrictions", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "GameConfigurations",
|
||||
keyColumn: "Id",
|
||||
keyValue: "default",
|
||||
columns: new[] { "CardSetIdForResourceDlView", "ChallengeTwoPickSleeveId", "ChallengeUseTwoPickPremiumCard", "IsBattlePassPeriod", "IsBeginnerMission", "TsRotationId" },
|
||||
values: new object[] { 0, 0L, false, false, false, "" });
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "ArenaSeasons");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "AvatarAbilities");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Banners");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "BattlePassLevels");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Colosseums");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "DailyLoginBonuses");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "DefaultDecks");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "DefaultLeaderSkinSettings");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "FeatureMaintenances");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "LoadingExclusionCards");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "MaintenanceCards");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "MasterPointRankingPeriods");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "MyRotationAbilities");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "MyRotationSettings");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "PreReleaseInfos");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ReprintedCards");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "SealedSeasons");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "SpotCards");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "UnlimitedRestrictions");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "CardSetIdForResourceDlView",
|
||||
table: "GameConfigurations");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "ChallengeTwoPickSleeveId",
|
||||
table: "GameConfigurations");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "ChallengeUseTwoPickPremiumCard",
|
||||
table: "GameConfigurations");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IsBattlePassPeriod",
|
||||
table: "GameConfigurations");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IsBeginnerMission",
|
||||
table: "GameConfigurations");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "TsRotationId",
|
||||
table: "GameConfigurations");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,6 +85,153 @@ namespace SVSim.Database.Migrations
|
||||
b.ToTable("MyPageBackgroundEntryViewer");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.ArenaSeasonConfig", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<decimal>("Cost")
|
||||
.HasColumnType("numeric(20,0)");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("Enable")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("FormatInfo")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<bool>("IsJoin")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<int>("Mode")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<decimal>("RupyCost")
|
||||
.HasColumnType("numeric(20,0)");
|
||||
|
||||
b.Property<int>("TicketCost")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("ArenaSeasons");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.AvatarAbilityEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Ability")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("AbilityCost")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("AbilityDesc")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("BattleStartFirstPlayerTurnBp")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("BattleStartMaxLife")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("BattleStartSecondPlayerTurnBp")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("LeaderSkinId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("PassiveAbility")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("PassiveAbilityDesc")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("AvatarAbilities");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.BannerEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("ChangeTime")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Click")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("ImageName")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("ImagePaths")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<int>("RemainingTime")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Banners");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.BattlePassLevelEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("Level")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("RewardData")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("BattlePassLevels");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.BattlefieldEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -1213,6 +1360,161 @@ namespace SVSim.Database.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.ColosseumConfig", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("CardPoolName")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("ColosseumId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("ColosseumName")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("DeckFormat")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<DateTime>("EndTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("IsAllCardEnabled")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IsColosseumPeriod")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("IsDisplayTips")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("IsNormalTwoPick")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<bool>("IsRoundPeriod")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("IsSpecialMode")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("NowRound")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("SalesPeriodInfo")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<DateTime>("StartTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("TipsId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Colosseums");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.DailyLoginBonusEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("BonusData")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<int>("BonusId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("DailyLoginBonuses");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.DefaultDeckEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("CardIdArray")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<int>("ClassId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("DeckName")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("DeckNo")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("LeaderSkinId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<long>("SleeveId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("DefaultDecks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.DefaultLeaderSkinSettingEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("ClassId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("IsRandomLeaderSkin")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("LeaderSkinId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("DefaultLeaderSkinSettings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.DegreeEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -21399,11 +21701,44 @@ namespace SVSim.Database.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.FeatureMaintenanceEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("FeatureKey")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("FeatureMaintenances");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.GameConfiguration", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("CardSetIdForResourceDlView")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<long>("ChallengeTwoPickSleeveId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<bool>("ChallengeUseTwoPickPremiumCard")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
@@ -21431,9 +21766,19 @@ namespace SVSim.Database.Migrations
|
||||
b.Property<int>("DefaultSleeveId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IsBattlePassPeriod")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<bool>("IsBeginnerMission")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<int>("MaxFriends")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("TsRotationId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("DefaultDegreeId");
|
||||
@@ -21450,6 +21795,9 @@ namespace SVSim.Database.Migrations
|
||||
new
|
||||
{
|
||||
Id = "default",
|
||||
CardSetIdForResourceDlView = 0,
|
||||
ChallengeTwoPickSleeveId = 0L,
|
||||
ChallengeUseTwoPickPremiumCard = false,
|
||||
DateCreated = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
|
||||
DefaultCrystals = 50000m,
|
||||
DefaultDegreeId = 300003,
|
||||
@@ -21458,7 +21806,10 @@ namespace SVSim.Database.Migrations
|
||||
DefaultMyPageBackgroundId = 100000000,
|
||||
DefaultRupees = 50000m,
|
||||
DefaultSleeveId = 3000011,
|
||||
MaxFriends = 20
|
||||
IsBattlePassPeriod = false,
|
||||
IsBeginnerMission = false,
|
||||
MaxFriends = 20,
|
||||
TsRotationId = ""
|
||||
});
|
||||
});
|
||||
|
||||
@@ -24844,6 +25195,72 @@ namespace SVSim.Database.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.LoadingExclusionCardEntry", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<long>("CardId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("LoadingExclusionCards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.MaintenanceCardEntry", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<long>("CardId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("MaintenanceCards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.MasterPointRankingPeriodEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("BeginTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime>("EndTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<long>("NecessaryScore")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<int>("PeriodNum")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("MasterPointRankingPeriods");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.MyPageBackgroundEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -24947,6 +25364,126 @@ namespace SVSim.Database.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.MyRotationAbilityEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("AbilityId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("MyRotationAbilities");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.MyRotationSettingEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("AbilitiesCsv")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("CardSetIdsCsv")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("ReprintedCardIds")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<string>("RestrictedCardIds")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<int>("RotationId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("MyRotationSettings");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.PreReleaseInfo", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("CardMasterId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("DefaultCardMasterId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<DateTime>("DisplayEndTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime>("EndTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime>("FreeMatchStartTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<bool>("IsPreRotationFreeMatchTerm")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("LatestReprintedBaseCardIds")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<string>("NextCardSetId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("PreReleaseCardMasterId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("PreReleaseId")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("ReprintedBaseCardIds")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<string>("RotationCardSetIdList")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<DateTime>("StartTime")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("PreReleaseInfos");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.RankInfoEntry", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
@@ -25623,6 +26160,73 @@ namespace SVSim.Database.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.ReprintedCardEntry", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<long>("CardId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("ReprintedCards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.SealedConfig", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("CrystalCost")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("DeckUsingNumMin")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("Enable")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IsDeckCodeMaintenance")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<bool>("IsJoin")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("PackInfo")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<int>("RupyCost")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("SalesPeriodInfo")
|
||||
.IsRequired()
|
||||
.HasColumnType("jsonb");
|
||||
|
||||
b.Property<int>("ScheduleId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("TicketCost")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("SealedSeasons");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.ShadowverseCardEntry", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
@@ -25694,6 +26298,7 @@ namespace SVSim.Database.Migrations
|
||||
modelBuilder.Entity("SVSim.Database.Models.ShadowverseDeckEntry", b =>
|
||||
{
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("uuid");
|
||||
|
||||
b.Property<int>("ClassId")
|
||||
@@ -33268,6 +33873,50 @@ namespace SVSim.Database.Migrations
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.SpotCardEntry", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<long>("CardId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<int>("Cost")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("SpotCards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.UnlimitedRestrictionEntry", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<long>("CardId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<DateTime>("DateCreated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("DateUpdated")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("RestrictionValue")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("UnlimitedRestrictions");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SVSim.Database.Models.Viewer", b =>
|
||||
{
|
||||
b.Property<long>("Id")
|
||||
|
||||
27
SVSim.Database/Models/ArenaSeasonConfig.cs
Normal file
27
SVSim.Database/Models/ArenaSeasonConfig.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Singleton row (Id=1) capturing the current Take Two arena season config from
|
||||
/// /load/index data.arena_info[0]. FormatInfo jsonb holds the nested
|
||||
/// {two_pick_type, card_pool_name, announce_id, last_card_pack_set_id, start_time, end_time}.
|
||||
/// </summary>
|
||||
public class ArenaSeasonConfig : BaseEntity<int>
|
||||
{
|
||||
public int Mode { get; set; }
|
||||
|
||||
public int Enable { get; set; }
|
||||
|
||||
public ulong Cost { get; set; }
|
||||
|
||||
public ulong RupyCost { get; set; }
|
||||
|
||||
public int TicketCost { get; set; }
|
||||
|
||||
public bool IsJoin { get; set; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string FormatInfo { get; set; } = "{}";
|
||||
}
|
||||
30
SVSim.Database/Models/AvatarAbilityEntry.cs
Normal file
30
SVSim.Database/Models/AvatarAbilityEntry.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One Avatar (Hero) mode definition. Keyed by leader_skin_id. The Ability/PassiveAbility strings
|
||||
/// are the dense "(skill:...)(timing:...)" effect DSL that cannot be reconstructed from card master —
|
||||
/// preserve verbatim from /load/index data.avatar_info.abilities[leaderSkinId].
|
||||
/// </summary>
|
||||
public class AvatarAbilityEntry : BaseEntity<int>
|
||||
{
|
||||
public int LeaderSkinId { get => Id; set => Id = value; }
|
||||
|
||||
public int BattleStartFirstPlayerTurnBp { get; set; }
|
||||
|
||||
public int BattleStartSecondPlayerTurnBp { get; set; }
|
||||
|
||||
public int BattleStartMaxLife { get; set; }
|
||||
|
||||
public string AbilityCost { get; set; } = string.Empty;
|
||||
|
||||
public string Ability { get; set; } = string.Empty;
|
||||
|
||||
public string PassiveAbility { get; set; } = string.Empty;
|
||||
|
||||
public string AbilityDesc { get; set; } = string.Empty;
|
||||
|
||||
public string PassiveAbilityDesc { get; set; } = string.Empty;
|
||||
}
|
||||
24
SVSim.Database/Models/BannerEntry.cs
Normal file
24
SVSim.Database/Models/BannerEntry.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One mypage banner from /mypage/index data.banner. Id is synthetic ordinal (1-N) since the wire
|
||||
/// has no explicit ID. Highly time-varying content — recapture aggressively before EOS.
|
||||
/// </summary>
|
||||
public class BannerEntry : BaseEntity<int>
|
||||
{
|
||||
public string ImageName { get; set; } = string.Empty;
|
||||
|
||||
public string Click { get; set; } = string.Empty;
|
||||
|
||||
public string Status { get; set; } = string.Empty;
|
||||
|
||||
public int ChangeTime { get; set; }
|
||||
|
||||
public int RemainingTime { get; set; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string ImagePaths { get; set; } = "[]";
|
||||
}
|
||||
16
SVSim.Database/Models/BattlePassLevelEntry.cs
Normal file
16
SVSim.Database/Models/BattlePassLevelEntry.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One battle pass level (1-100). RewardData jsonb holds the per-level reward blob from
|
||||
/// /load/index data.battle_pass_level_info[level]. Shape varies per level so we preserve verbatim.
|
||||
/// </summary>
|
||||
public class BattlePassLevelEntry : BaseEntity<int>
|
||||
{
|
||||
public int Level { get => Id; set => Id = value; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string RewardData { get; set; } = "{}";
|
||||
}
|
||||
42
SVSim.Database/Models/ColosseumConfig.cs
Normal file
42
SVSim.Database/Models/ColosseumConfig.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Singleton row (Id=1) for the current Colosseum event from /mypage/index data.colosseum_info.
|
||||
/// Time-bound — recapture per Colosseum cycle (every few weeks).
|
||||
/// </summary>
|
||||
public class ColosseumConfig : BaseEntity<int>
|
||||
{
|
||||
public string ColosseumId { get; set; } = string.Empty;
|
||||
|
||||
public string ColosseumName { get; set; } = string.Empty;
|
||||
|
||||
public string CardPoolName { get; set; } = string.Empty;
|
||||
|
||||
public string DeckFormat { get; set; } = string.Empty;
|
||||
|
||||
public DateTime StartTime { get; set; }
|
||||
|
||||
public DateTime EndTime { get; set; }
|
||||
|
||||
public string NowRound { get; set; } = string.Empty;
|
||||
|
||||
public string IsDisplayTips { get; set; } = string.Empty;
|
||||
|
||||
public string TipsId { get; set; } = string.Empty;
|
||||
|
||||
public bool IsColosseumPeriod { get; set; }
|
||||
|
||||
public bool IsRoundPeriod { get; set; }
|
||||
|
||||
public string IsNormalTwoPick { get; set; } = string.Empty;
|
||||
|
||||
public string IsSpecialMode { get; set; } = string.Empty;
|
||||
|
||||
public int IsAllCardEnabled { get; set; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string SalesPeriodInfo { get; set; } = "{}";
|
||||
}
|
||||
17
SVSim.Database/Models/DailyLoginBonusEntry.cs
Normal file
17
SVSim.Database/Models/DailyLoginBonusEntry.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Daily login bonus campaign from /load/index data.daily_login_bonus (dict keyed by bonus_id,
|
||||
/// values are arrays of bonus days). Prod observed keys {1, 3, 4} with empty arrays — recapture
|
||||
/// target during active login bonus events.
|
||||
/// </summary>
|
||||
public class DailyLoginBonusEntry : BaseEntity<int>
|
||||
{
|
||||
public int BonusId { get => Id; set => Id = value; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string BonusData { get; set; } = "[]";
|
||||
}
|
||||
24
SVSim.Database/Models/DefaultDeckEntry.cs
Normal file
24
SVSim.Database/Models/DefaultDeckEntry.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Starter / "use default" deck definition from /deck/info data.default_deck_list.
|
||||
/// CardIdArray is the wire's int[] of 40 card_id values; stored as jsonb to keep it array-shaped.
|
||||
/// </summary>
|
||||
public class DefaultDeckEntry : BaseEntity<int>
|
||||
{
|
||||
public int DeckNo { get => Id; set => Id = value; }
|
||||
|
||||
public int ClassId { get; set; }
|
||||
|
||||
public long SleeveId { get; set; }
|
||||
|
||||
public int LeaderSkinId { get; set; }
|
||||
|
||||
public string DeckName { get; set; } = string.Empty;
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string CardIdArray { get; set; } = "[]";
|
||||
}
|
||||
13
SVSim.Database/Models/DefaultLeaderSkinSettingEntry.cs
Normal file
13
SVSim.Database/Models/DefaultLeaderSkinSettingEntry.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>One row per class: which leader skin is default and whether random rotation is on.</summary>
|
||||
public class DefaultLeaderSkinSettingEntry : BaseEntity<int>
|
||||
{
|
||||
public int ClassId { get => Id; set => Id = value; }
|
||||
|
||||
public int IsRandomLeaderSkin { get; set; }
|
||||
|
||||
public int LeaderSkinId { get; set; }
|
||||
}
|
||||
16
SVSim.Database/Models/FeatureMaintenanceEntry.cs
Normal file
16
SVSim.Database/Models/FeatureMaintenanceEntry.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Per-feature maintenance toggle from /load/index data.feature_maintenance_list. Empty in current
|
||||
/// prod capture; recapture target if a feature ever gets disabled before EOS.
|
||||
/// </summary>
|
||||
public class FeatureMaintenanceEntry : BaseEntity<int>
|
||||
{
|
||||
public string FeatureKey { get; set; } = string.Empty;
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string Data { get; set; } = "{}";
|
||||
}
|
||||
@@ -9,9 +9,30 @@ public class GameConfiguration : BaseEntity<string>
|
||||
public ulong DefaultRupees { get; set; }
|
||||
|
||||
public ulong DefaultEther { get; set; }
|
||||
|
||||
|
||||
public int MaxFriends { get; set; }
|
||||
|
||||
#region Time-varying globals populated by SVSim.Bootstrap.GlobalsImporter
|
||||
|
||||
/// <summary>Current "Take Two Special" rotation ID, e.g. "10015". Points into MyRotationSettingEntry.</summary>
|
||||
public string TsRotationId { get; set; } = string.Empty;
|
||||
|
||||
public bool ChallengeUseTwoPickPremiumCard { get; set; }
|
||||
|
||||
public long ChallengeTwoPickSleeveId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Bool on the wire (prod sends true/false); local previously sent int. Fixes the
|
||||
/// type-mismatch noted in seed-data-strategy-2026-05-23.md crash audit.
|
||||
/// </summary>
|
||||
public bool IsBattlePassPeriod { get; set; }
|
||||
|
||||
public bool IsBeginnerMission { get; set; }
|
||||
|
||||
public int CardSetIdForResourceDlView { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Foreign Keys
|
||||
|
||||
public int DefaultDegreeId { get; set; }
|
||||
|
||||
12
SVSim.Database/Models/LoadingExclusionCardEntry.cs
Normal file
12
SVSim.Database/Models/LoadingExclusionCardEntry.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Cards excluded from loading-screen art rotation, from /load/index data.loading_exclusion_card_list.
|
||||
/// References ShadowverseCardEntry.Id but no FK.
|
||||
/// </summary>
|
||||
public class LoadingExclusionCardEntry : BaseEntity<long>
|
||||
{
|
||||
public long CardId { get => Id; set => Id = value; }
|
||||
}
|
||||
12
SVSim.Database/Models/MaintenanceCardEntry.cs
Normal file
12
SVSim.Database/Models/MaintenanceCardEntry.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Cards disabled mid-season for emergency balance, from /load/index data.maintenance_card_list.
|
||||
/// Empty in current prod capture; recapture target if a card ever gets emergency-disabled before EOS.
|
||||
/// </summary>
|
||||
public class MaintenanceCardEntry : BaseEntity<long>
|
||||
{
|
||||
public long CardId { get => Id; set => Id = value; }
|
||||
}
|
||||
18
SVSim.Database/Models/MasterPointRankingPeriodEntry.cs
Normal file
18
SVSim.Database/Models/MasterPointRankingPeriodEntry.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Monthly Master Point ranking window from /mypage/index data.master_point_ranking_period.
|
||||
/// One row per period; the "current" period is fetched by EndTime > now ordering.
|
||||
/// </summary>
|
||||
public class MasterPointRankingPeriodEntry : BaseEntity<int>
|
||||
{
|
||||
public int PeriodNum { get; set; }
|
||||
|
||||
public long NecessaryScore { get; set; }
|
||||
|
||||
public DateTime BeginTime { get; set; }
|
||||
|
||||
public DateTime EndTime { get; set; }
|
||||
}
|
||||
13
SVSim.Database/Models/MyRotationAbilityEntry.cs
Normal file
13
SVSim.Database/Models/MyRotationAbilityEntry.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
public class MyRotationAbilityEntry : BaseEntity<int>
|
||||
{
|
||||
public int AbilityId { get => Id; set => Id = value; }
|
||||
|
||||
/// <summary>Raw ability blob from /load/index data.my_rotation_info.abilities[abilityId].</summary>
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string Data { get; set; } = "{}";
|
||||
}
|
||||
24
SVSim.Database/Models/MyRotationSettingEntry.cs
Normal file
24
SVSim.Database/Models/MyRotationSettingEntry.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Joins /load/index data.my_rotation_info.{setting, reprinted_base_card_ids, restricted_base_card_id_list}
|
||||
/// on rotation_id. CardSetIdsCsv and AbilitiesCsv mirror the wire's pipe-delimited string format
|
||||
/// (e.g. "10000|10001|10002"); the importer keeps them verbatim.
|
||||
/// </summary>
|
||||
public class MyRotationSettingEntry : BaseEntity<int>
|
||||
{
|
||||
public int RotationId { get => Id; set => Id = value; }
|
||||
|
||||
public string CardSetIdsCsv { get; set; } = string.Empty;
|
||||
|
||||
public string AbilitiesCsv { get; set; } = string.Empty;
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string ReprintedCardIds { get; set; } = "[]";
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string RestrictedCardIds { get; set; } = "[]";
|
||||
}
|
||||
41
SVSim.Database/Models/PreReleaseInfo.cs
Normal file
41
SVSim.Database/Models/PreReleaseInfo.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Singleton row (Id=1) for upcoming card-set pre-release window from /load/index data.pre_release_info.
|
||||
/// Current capture has stale 1900/2019/2020 dates — likely "no active pre-release" sentinel.
|
||||
/// Recapture target during an active pre-release window (typically a week before each new expansion).
|
||||
/// </summary>
|
||||
public class PreReleaseInfo : BaseEntity<int>
|
||||
{
|
||||
public string PreReleaseId { get; set; } = string.Empty;
|
||||
|
||||
public string NextCardSetId { get; set; } = string.Empty;
|
||||
|
||||
public DateTime StartTime { get; set; }
|
||||
|
||||
public DateTime EndTime { get; set; }
|
||||
|
||||
public DateTime DisplayEndTime { get; set; }
|
||||
|
||||
public DateTime FreeMatchStartTime { get; set; }
|
||||
|
||||
public int CardMasterId { get; set; }
|
||||
|
||||
public string DefaultCardMasterId { get; set; } = string.Empty;
|
||||
|
||||
public string PreReleaseCardMasterId { get; set; } = string.Empty;
|
||||
|
||||
public bool IsPreRotationFreeMatchTerm { get; set; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string RotationCardSetIdList { get; set; } = "[]";
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string ReprintedBaseCardIds { get; set; } = "{}";
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string LatestReprintedBaseCardIds { get; set; } = "{}";
|
||||
}
|
||||
12
SVSim.Database/Models/ReprintedCardEntry.cs
Normal file
12
SVSim.Database/Models/ReprintedCardEntry.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Cards currently in the reprinted list from /load/index data.reprinted_base_card_ids.
|
||||
/// References ShadowverseCardEntry.Id but no FK.
|
||||
/// </summary>
|
||||
public class ReprintedCardEntry : BaseEntity<long>
|
||||
{
|
||||
public long CardId { get => Id; set => Id = value; }
|
||||
}
|
||||
33
SVSim.Database/Models/SealedConfig.cs
Normal file
33
SVSim.Database/Models/SealedConfig.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Singleton row (Id=1) for the current Sealed Arena season from /mypage/index data.sealed_info.
|
||||
/// PackInfo jsonb is the int[] of pack set IDs used in the pool.
|
||||
/// </summary>
|
||||
public class SealedConfig : BaseEntity<int>
|
||||
{
|
||||
public int Enable { get; set; }
|
||||
|
||||
public int CrystalCost { get; set; }
|
||||
|
||||
public int RupyCost { get; set; }
|
||||
|
||||
public int TicketCost { get; set; }
|
||||
|
||||
public int DeckUsingNumMin { get; set; }
|
||||
|
||||
public int ScheduleId { get; set; }
|
||||
|
||||
public bool IsJoin { get; set; }
|
||||
|
||||
public bool IsDeckCodeMaintenance { get; set; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string PackInfo { get; set; } = "[]";
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public string SalesPeriodInfo { get; set; } = "{}";
|
||||
}
|
||||
14
SVSim.Database/Models/SpotCardEntry.cs
Normal file
14
SVSim.Database/Models/SpotCardEntry.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// One row per rentable "spot card" from /load/index data.spot_cards (dict {card_id: cost}).
|
||||
/// References ShadowverseCardEntry.Id but no FK — bootstrap warns on orphans.
|
||||
/// </summary>
|
||||
public class SpotCardEntry : BaseEntity<long>
|
||||
{
|
||||
public long CardId { get => Id; set => Id = value; }
|
||||
|
||||
public int Cost { get; set; }
|
||||
}
|
||||
15
SVSim.Database/Models/UnlimitedRestrictionEntry.cs
Normal file
15
SVSim.Database/Models/UnlimitedRestrictionEntry.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using SVSim.Database.Common;
|
||||
|
||||
namespace SVSim.Database.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Per-card unlimited-format ban/limit value from /load/index data.unlimited_restricted_base_card_id_list
|
||||
/// (dict {card_id: restriction_value}). RestrictionValue semantics TBD — prod observed {0, 1}; the audit
|
||||
/// flags this as "0 = limit-1? 1 = hard-ban?" pending a client read.
|
||||
/// </summary>
|
||||
public class UnlimitedRestrictionEntry : BaseEntity<long>
|
||||
{
|
||||
public long CardId { get => Id; set => Id = value; }
|
||||
|
||||
public int RestrictionValue { get; set; }
|
||||
}
|
||||
@@ -28,9 +28,81 @@ public class GlobalsRepository : IGlobalsRepository
|
||||
.Include(gc => gc.DefaultEmblem).Include(gc => gc.DefaultDegree).Include(gc => gc.DefaultSleeve).FirstOrDefaultAsync(gc => gc.Id == key) ??
|
||||
new GameConfiguration();
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<RankInfoEntry>> GetRankInfo()
|
||||
{
|
||||
return await _dbContext.Set<RankInfoEntry>().ToListAsync();
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- Prod-captured globals ----------
|
||||
|
||||
public Task<List<MyRotationSettingEntry>> GetMyRotationSettings() =>
|
||||
_dbContext.MyRotationSettings.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<MyRotationAbilityEntry>> GetMyRotationAbilities() =>
|
||||
_dbContext.MyRotationAbilities.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<AvatarAbilityEntry>> GetAvatarAbilities() =>
|
||||
_dbContext.AvatarAbilities.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<DefaultDeckEntry>> GetDefaultDecks() =>
|
||||
_dbContext.DefaultDecks.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<DefaultLeaderSkinSettingEntry>> GetDefaultLeaderSkinSettings() =>
|
||||
_dbContext.DefaultLeaderSkinSettings.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<ArenaSeasonConfig?> GetCurrentArenaSeason() =>
|
||||
_dbContext.ArenaSeasons.AsNoTracking().FirstOrDefaultAsync(e => e.Id == 1);
|
||||
|
||||
public Task<List<SpotCardEntry>> GetSpotCards() =>
|
||||
_dbContext.SpotCards.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<ReprintedCardEntry>> GetReprintedCards() =>
|
||||
_dbContext.ReprintedCards.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<UnlimitedRestrictionEntry>> GetUnlimitedRestrictions() =>
|
||||
_dbContext.UnlimitedRestrictions.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<LoadingExclusionCardEntry>> GetLoadingExclusionCards() =>
|
||||
_dbContext.LoadingExclusionCards.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<BattlePassLevelEntry>> GetBattlePassLevels() =>
|
||||
_dbContext.BattlePassLevels.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<DailyLoginBonusEntry>> GetDailyLoginBonus() =>
|
||||
_dbContext.DailyLoginBonuses.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<BannerEntry>> GetBanners() =>
|
||||
_dbContext.Banners.AsNoTracking().OrderBy(b => b.Id).ToListAsync();
|
||||
|
||||
public Task<ColosseumConfig?> GetCurrentColosseum() =>
|
||||
_dbContext.Colosseums.AsNoTracking().FirstOrDefaultAsync(e => e.Id == 1);
|
||||
|
||||
public Task<SealedConfig?> GetCurrentSealedSeason() =>
|
||||
_dbContext.SealedSeasons.AsNoTracking().FirstOrDefaultAsync(e => e.Id == 1);
|
||||
|
||||
/// <summary>Returns the master-point ranking period whose EndTime is in the future, or the latest by EndTime as fallback.</summary>
|
||||
public async Task<MasterPointRankingPeriodEntry?> GetCurrentMasterPointPeriod()
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
return await _dbContext.MasterPointRankingPeriods.AsNoTracking()
|
||||
.Where(p => p.EndTime >= now)
|
||||
.OrderBy(p => p.EndTime)
|
||||
.FirstOrDefaultAsync()
|
||||
?? await _dbContext.MasterPointRankingPeriods.AsNoTracking()
|
||||
.OrderByDescending(p => p.EndTime)
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public Task<List<MaintenanceCardEntry>> GetMaintenanceCards() =>
|
||||
_dbContext.MaintenanceCards.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<List<FeatureMaintenanceEntry>> GetFeatureMaintenances() =>
|
||||
_dbContext.FeatureMaintenances.AsNoTracking().ToListAsync();
|
||||
|
||||
public Task<PreReleaseInfo?> GetPreReleaseInfo() =>
|
||||
_dbContext.PreReleaseInfos.AsNoTracking().FirstOrDefaultAsync(e => e.Id == 1);
|
||||
|
||||
public Task<List<ShadowverseCardSetEntry>> GetRotationCardSets() =>
|
||||
_dbContext.CardSets.AsNoTracking().Where(s => s.IsInRotation).ToListAsync();
|
||||
}
|
||||
|
||||
@@ -8,4 +8,26 @@ public interface IGlobalsRepository
|
||||
Task<List<BattlefieldEntry>> GetBattlefields(bool onlyOpen);
|
||||
Task<GameConfiguration> GetGameConfiguration(string key);
|
||||
Task<List<RankInfoEntry>> GetRankInfo();
|
||||
}
|
||||
|
||||
// Prod-captured globals — populated by SVSim.Bootstrap.GlobalsImporter.
|
||||
Task<List<MyRotationSettingEntry>> GetMyRotationSettings();
|
||||
Task<List<MyRotationAbilityEntry>> GetMyRotationAbilities();
|
||||
Task<List<AvatarAbilityEntry>> GetAvatarAbilities();
|
||||
Task<List<DefaultDeckEntry>> GetDefaultDecks();
|
||||
Task<List<DefaultLeaderSkinSettingEntry>> GetDefaultLeaderSkinSettings();
|
||||
Task<ArenaSeasonConfig?> GetCurrentArenaSeason();
|
||||
Task<List<SpotCardEntry>> GetSpotCards();
|
||||
Task<List<ReprintedCardEntry>> GetReprintedCards();
|
||||
Task<List<UnlimitedRestrictionEntry>> GetUnlimitedRestrictions();
|
||||
Task<List<LoadingExclusionCardEntry>> GetLoadingExclusionCards();
|
||||
Task<List<BattlePassLevelEntry>> GetBattlePassLevels();
|
||||
Task<List<DailyLoginBonusEntry>> GetDailyLoginBonus();
|
||||
Task<List<BannerEntry>> GetBanners();
|
||||
Task<ColosseumConfig?> GetCurrentColosseum();
|
||||
Task<SealedConfig?> GetCurrentSealedSeason();
|
||||
Task<MasterPointRankingPeriodEntry?> GetCurrentMasterPointPeriod();
|
||||
Task<List<MaintenanceCardEntry>> GetMaintenanceCards();
|
||||
Task<List<FeatureMaintenanceEntry>> GetFeatureMaintenances();
|
||||
Task<PreReleaseInfo?> GetPreReleaseInfo();
|
||||
Task<List<ShadowverseCardSetEntry>> GetRotationCardSets();
|
||||
}
|
||||
|
||||
@@ -36,6 +36,28 @@ public class SVSimDbContext : DbContext
|
||||
|
||||
public DbSet<GameConfiguration> GameConfigurations => Set<GameConfiguration>();
|
||||
|
||||
// Prod-captured globals — populated by SVSim.Bootstrap, not HasData. See
|
||||
// docs/audits/prod-data-capture-strategy-2026-05-23.md.
|
||||
public DbSet<MyRotationSettingEntry> MyRotationSettings => Set<MyRotationSettingEntry>();
|
||||
public DbSet<MyRotationAbilityEntry> MyRotationAbilities => Set<MyRotationAbilityEntry>();
|
||||
public DbSet<AvatarAbilityEntry> AvatarAbilities => Set<AvatarAbilityEntry>();
|
||||
public DbSet<DefaultDeckEntry> DefaultDecks => Set<DefaultDeckEntry>();
|
||||
public DbSet<DefaultLeaderSkinSettingEntry> DefaultLeaderSkinSettings => Set<DefaultLeaderSkinSettingEntry>();
|
||||
public DbSet<ArenaSeasonConfig> ArenaSeasons => Set<ArenaSeasonConfig>();
|
||||
public DbSet<SpotCardEntry> SpotCards => Set<SpotCardEntry>();
|
||||
public DbSet<ReprintedCardEntry> ReprintedCards => Set<ReprintedCardEntry>();
|
||||
public DbSet<UnlimitedRestrictionEntry> UnlimitedRestrictions => Set<UnlimitedRestrictionEntry>();
|
||||
public DbSet<LoadingExclusionCardEntry> LoadingExclusionCards => Set<LoadingExclusionCardEntry>();
|
||||
public DbSet<BattlePassLevelEntry> BattlePassLevels => Set<BattlePassLevelEntry>();
|
||||
public DbSet<DailyLoginBonusEntry> DailyLoginBonuses => Set<DailyLoginBonusEntry>();
|
||||
public DbSet<BannerEntry> Banners => Set<BannerEntry>();
|
||||
public DbSet<ColosseumConfig> Colosseums => Set<ColosseumConfig>();
|
||||
public DbSet<SealedConfig> SealedSeasons => Set<SealedConfig>();
|
||||
public DbSet<MasterPointRankingPeriodEntry> MasterPointRankingPeriods => Set<MasterPointRankingPeriodEntry>();
|
||||
public DbSet<MaintenanceCardEntry> MaintenanceCards => Set<MaintenanceCardEntry>();
|
||||
public DbSet<FeatureMaintenanceEntry> FeatureMaintenances => Set<FeatureMaintenanceEntry>();
|
||||
public DbSet<PreReleaseInfo> PreReleaseInfos => Set<PreReleaseInfo>();
|
||||
|
||||
#endregion
|
||||
|
||||
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
|
||||
|
||||
Reference in New Issue
Block a user