mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
feat: Implement quest reward system with item selection and storage; update related services and database schema
This commit is contained in:
@@ -109,6 +109,7 @@ public static class DatabaseBootstrap
|
||||
await EnsureRoomColumnsAsync(db);
|
||||
await EnsureRoomSceneColumnsAsync(db);
|
||||
await EnsureInventionColumnsAsync(db);
|
||||
await EnsureGameRewardColumnsAsync(db);
|
||||
await EnsureMarch2023TablesAsync(db);
|
||||
|
||||
// Coach system account at Player.Id=1. The RR-Original room seeder
|
||||
@@ -397,6 +398,30 @@ public static class DatabaseBootstrap
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>Post-Initial columns on GameRewardSelections for the real
|
||||
/// item-reward flow (offered store-item ids + granted marker).</summary>
|
||||
private static async Task EnsureGameRewardColumnsAsync(DorkNetDbContext db)
|
||||
{
|
||||
var provider = db.Database.ProviderName ?? string.Empty;
|
||||
if (provider.Contains("Npgsql", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
foreach (var col in new[] { "Offer1ItemId", "Offer2ItemId", "Offer3ItemId", "GrantedItemId" })
|
||||
await db.Database.ExecuteSqlRawAsync(
|
||||
$@"ALTER TABLE ""GameRewardSelections"" ADD COLUMN IF NOT EXISTS ""{col}"" bigint NOT NULL DEFAULT 0;");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var col in new[] { "Offer1ItemId", "Offer2ItemId", "Offer3ItemId", "GrantedItemId" })
|
||||
{
|
||||
try
|
||||
{
|
||||
await db.Database.ExecuteSqlRawAsync(
|
||||
$@"ALTER TABLE ""GameRewardSelections"" ADD COLUMN ""{col}"" INTEGER NOT NULL DEFAULT 0;");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
private static async Task EnsureRoomSceneColumnsAsync(DorkNetDbContext db)
|
||||
{
|
||||
var provider = db.Database.ProviderName ?? string.Empty;
|
||||
|
||||
@@ -201,6 +201,7 @@ public static class ServiceCollectionExtensions
|
||||
services.AddScoped<ClubService>();
|
||||
services.AddScoped<LevelService>();
|
||||
services.AddScoped<StoreService>();
|
||||
services.AddScoped<QuestRewardService>();
|
||||
services.AddScoped<SignupCodeService>();
|
||||
// Singleton — the protobuf blob is identical for every room and built
|
||||
// once at startup; no need to rebuild per request.
|
||||
|
||||
Reference in New Issue
Block a user