feat(pack): persist daily_free_gacha_count on PackChildGachaEntry
This commit is contained in:
@@ -190,5 +190,42 @@
|
|||||||
"dialog_title": "Dia_BuyCard_005_Title"
|
"dialog_title": "Dia_BuyCard_005_Title"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parent_gacha_id": 80032,
|
||||||
|
"base_pack_id": 80001,
|
||||||
|
"gacha_type": 1,
|
||||||
|
"pack_category": 1,
|
||||||
|
"poster_type": 0,
|
||||||
|
"commence_date": "2026-06-01 02:00:00",
|
||||||
|
"complete_date": "2026-07-01 01:59:59",
|
||||||
|
"sleeve_id": 5090001,
|
||||||
|
"special_sleeve_id": 0,
|
||||||
|
"override_draw_effect_pack_id": 80001,
|
||||||
|
"override_ui_effect_pack_id": 80001,
|
||||||
|
"gacha_detail": "Throwback test pack with a free-pack-of-the-day child.",
|
||||||
|
"is_hide": true,
|
||||||
|
"is_new": false,
|
||||||
|
"is_pre_release": false,
|
||||||
|
"is_enabled": false,
|
||||||
|
"open_count_limit": 0,
|
||||||
|
"sales_period_time": "2026-07-01 01:59:59",
|
||||||
|
"gacha_point": null,
|
||||||
|
"child_gachas": [
|
||||||
|
{
|
||||||
|
"gacha_id": 780032,
|
||||||
|
"type_detail": 10,
|
||||||
|
"cost": 1,
|
||||||
|
"card_count": 8,
|
||||||
|
"item_id": null,
|
||||||
|
"is_daily_single": false,
|
||||||
|
"override_increase_gacha_point": 0,
|
||||||
|
"purchase_limit_count": 1,
|
||||||
|
"daily_free_gacha_count": 1,
|
||||||
|
"free_gacha_campaign_id": 49,
|
||||||
|
"campaign_name": "New Season Release Bonus"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"banners": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ public class PackImporter
|
|||||||
IsDailySingle = c.IsDailySingle,
|
IsDailySingle = c.IsDailySingle,
|
||||||
OverrideIncreaseGachaPoint = c.OverrideIncreaseGachaPoint,
|
OverrideIncreaseGachaPoint = c.OverrideIncreaseGachaPoint,
|
||||||
PurchaseLimitCount = c.PurchaseLimitCount,
|
PurchaseLimitCount = c.PurchaseLimitCount,
|
||||||
|
DailyFreeGachaCount = c.DailyFreeGachaCount,
|
||||||
FreeGachaCampaignId = c.FreeGachaCampaignId,
|
FreeGachaCampaignId = c.FreeGachaCampaignId,
|
||||||
CampaignName = c.CampaignName,
|
CampaignName = c.CampaignName,
|
||||||
});
|
});
|
||||||
@@ -151,6 +152,7 @@ public class PackImporter
|
|||||||
IsDailySingle = c.IsDailySingle,
|
IsDailySingle = c.IsDailySingle,
|
||||||
OverrideIncreaseGachaPoint = c.OverrideIncreaseGachaPoint,
|
OverrideIncreaseGachaPoint = c.OverrideIncreaseGachaPoint,
|
||||||
PurchaseLimitCount = c.PurchaseLimitCount,
|
PurchaseLimitCount = c.PurchaseLimitCount,
|
||||||
|
DailyFreeGachaCount = c.DailyFreeGachaCount,
|
||||||
FreeGachaCampaignId = c.FreeGachaCampaignId,
|
FreeGachaCampaignId = c.FreeGachaCampaignId,
|
||||||
CampaignName = c.CampaignName,
|
CampaignName = c.CampaignName,
|
||||||
});
|
});
|
||||||
|
|||||||
4193
SVSim.Database/Migrations/20260609012522_AddPackChildGachaDailyFreeGachaCount.Designer.cs
generated
Normal file
4193
SVSim.Database/Migrations/20260609012522_AddPackChildGachaDailyFreeGachaCount.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace SVSim.Database.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AddPackChildGachaDailyFreeGachaCount : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "DailyFreeGachaCount",
|
||||||
|
table: "PackChildGachaEntry",
|
||||||
|
type: "integer",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "DailyFreeGachaCount",
|
||||||
|
table: "PackChildGachaEntry");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3441,6 +3441,9 @@ namespace SVSim.Database.Migrations
|
|||||||
b1.Property<int>("Cost")
|
b1.Property<int>("Cost")
|
||||||
.HasColumnType("integer");
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
b1.Property<int>("DailyFreeGachaCount")
|
||||||
|
.HasColumnType("integer");
|
||||||
|
|
||||||
b1.Property<int?>("FreeGachaCampaignId")
|
b1.Property<int?>("FreeGachaCampaignId")
|
||||||
.HasColumnType("integer");
|
.HasColumnType("integer");
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public class PackChildGachaEntry
|
|||||||
public bool IsDailySingle { get; set; }
|
public bool IsDailySingle { get; set; }
|
||||||
public int OverrideIncreaseGachaPoint { get; set; }
|
public int OverrideIncreaseGachaPoint { get; set; }
|
||||||
public int PurchaseLimitCount { get; set; }
|
public int PurchaseLimitCount { get; set; }
|
||||||
|
public int DailyFreeGachaCount { get; set; }
|
||||||
public int? FreeGachaCampaignId { get; set; }
|
public int? FreeGachaCampaignId { get; set; }
|
||||||
public string? CampaignName { get; set; }
|
public string? CampaignName { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,4 +58,21 @@ public class PackSeedingPipelineTests
|
|||||||
Assert.That(pack.ChildGachas.Count, Is.EqualTo(3),
|
Assert.That(pack.ChildGachas.Count, Is.EqualTo(3),
|
||||||
"child_gacha_info is owned — rerun must replace, not stack.");
|
"child_gacha_info is owned — rerun must replace, not stack.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task SeedGlobals_preserves_daily_free_gacha_count_on_free_child()
|
||||||
|
{
|
||||||
|
using var factory = new SVSimTestFactory();
|
||||||
|
await factory.SeedGlobalsAsync();
|
||||||
|
|
||||||
|
using var scope = factory.Services.CreateScope();
|
||||||
|
var db = scope.ServiceProvider.GetRequiredService<SVSimDbContext>();
|
||||||
|
var pack = await db.Packs.AsNoTracking().FirstAsync(p => p.Id == 80032);
|
||||||
|
var freeChild = pack.ChildGachas.Single(c => c.TypeDetail == 10);
|
||||||
|
|
||||||
|
Assert.That(freeChild.DailyFreeGachaCount, Is.EqualTo(1));
|
||||||
|
Assert.That(freeChild.PurchaseLimitCount, Is.EqualTo(1));
|
||||||
|
Assert.That(freeChild.FreeGachaCampaignId, Is.EqualTo(49));
|
||||||
|
Assert.That(freeChild.CampaignName, Is.EqualTo("New Season Release Bonus"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user