Skip to content

Commit c1d7cf8

Browse files
committed
refactor(LtdRaffleGrain): simplify dependency usage
1 parent 40a002b commit c1d7cf8

1 file changed

Lines changed: 18 additions & 22 deletions

File tree

Turbo.Catalog/Grains/LtdRaffleGrain.cs

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@ public sealed class LtdRaffleGrain(
3030
IOptions<CatalogConfig> config
3131
) : Grain, ILtdRaffleGrain
3232
{
33-
private readonly IGrainFactory _grainFactory = grainFactory;
34-
private readonly IDbContextFactory<TurboDbContext> _dbCtxFactory = dbCtxFactory;
35-
private readonly ILogger<LtdRaffleGrain> _logger = logger;
36-
private readonly ICatalogService _catalogService = catalogService;
3733
private readonly CatalogConfig _config = config.Value;
3834

3935
private readonly Dictionary<int, double> _currentBatchEntries = [];
@@ -63,13 +59,13 @@ public async Task<LtdRaffleEntryResult> EnterRaffleAsync(int playerId, Cancellat
6359
);
6460
}
6561

66-
var snap = _catalogService.GetCatalogSnapshot(CatalogType.Normal);
62+
var snap = catalogService.GetCatalogSnapshot(CatalogType.Normal);
6763
var product = snap.ProductsById.Values.FirstOrDefault(p => p.LtdSeriesId == _series.Id);
6864

6965
if (product == null || !snap.OffersById.TryGetValue(product.OfferId, out var offer))
7066
return LtdRaffleEntryResult.Failed(LtdRaffleEntryError.None);
7167

72-
var walletGrain = _grainFactory.GetPlayerWalletGrain(playerId);
68+
var walletGrain = grainFactory.GetPlayerWalletGrain(playerId);
7369
var credits = await walletGrain.GetAmountForCurrencyAsync(
7470
new CurrencyKind { CurrencyType = CurrencyType.Credits },
7571
ct
@@ -109,7 +105,7 @@ public async Task<LtdRaffleEntryResult> EnterRaffleAsync(int playerId, Cancellat
109105

110106
if (_config.LtdRaffle.LimitOnePerCustomer)
111107
{
112-
await using var dbCtx = await _dbCtxFactory.CreateDbContextAsync(ct);
108+
await using var dbCtx = await dbCtxFactory.CreateDbContextAsync(ct);
113109

114110
var alreadyWon = await dbCtx.LtdRaffleEntries.AnyAsync(
115111
e =>
@@ -144,7 +140,7 @@ public async Task<LtdRaffleEntryResult> EnterRaffleAsync(int playerId, Cancellat
144140
_currentBatchEntries[playerId] = await CalculateWeightAsync(playerId, ct);
145141
await PersistEntryAsync(playerId, _currentBatchId, ct);
146142

147-
await _grainFactory
143+
await grainFactory
148144
.GetPlayerPresenceGrain(playerId)
149145
.SendComposerAsync(
150146
new LtdRaffleEnteredMessageComposer { ClassName = product.ClassName ?? "LTD" }
@@ -191,7 +187,7 @@ private async Task ExecuteRaffleAsync()
191187

192188
private async Task<bool> TryFinalizeWinnerAsync(int playerId, string? batchId, bool isRaffle)
193189
{
194-
await using var dbCtx = await _dbCtxFactory.CreateDbContextAsync();
190+
await using var dbCtx = await dbCtxFactory.CreateDbContextAsync();
195191
await using var tx = await dbCtx.Database.BeginTransactionAsync();
196192

197193
try
@@ -204,14 +200,14 @@ private async Task<bool> TryFinalizeWinnerAsync(int playerId, string? batchId, b
204200
.OrderBy(x => x.Id)
205201
.FirstOrDefaultAsync();
206202

207-
if (series == null || series.RemainingQuantity <= 0)
203+
if (series is not { RemainingQuantity: > 0 })
208204
return false;
209205

210-
var snap = _catalogService.GetCatalogSnapshot(CatalogType.Normal);
206+
var snap = catalogService.GetCatalogSnapshot(CatalogType.Normal);
211207
var prod = snap.ProductsById.Values.First(p => p.LtdSeriesId == series.Id);
212208
var offer = snap.OffersById[prod.OfferId];
213209

214-
var debitResult = await _grainFactory
210+
var debitResult = await grainFactory
215211
.GetPlayerWalletGrain(playerId)
216212
.TryDebitAsync(BuildDebits(offer), CancellationToken.None);
217213

@@ -246,7 +242,7 @@ private async Task<bool> TryFinalizeWinnerAsync(int playerId, string? batchId, b
246242
await dbCtx.SaveChangesAsync();
247243
await tx.CommitAsync();
248244

249-
await _grainFactory
245+
await grainFactory
250246
.GetInventoryGrain(playerId)
251247
.GrantLtdFurnitureAsync(
252248
series.CatalogProductEntityId,
@@ -257,7 +253,7 @@ await _grainFactory
257253

258254
if (isRaffle)
259255
{
260-
await _grainFactory
256+
await grainFactory
261257
.GetPlayerPresenceGrain(playerId)
262258
.SendComposerAsync(
263259
new LtdRaffleResultMessageComposer
@@ -272,7 +268,7 @@ await _grainFactory
272268
}
273269
catch (Exception ex)
274270
{
275-
_logger.LogError(
271+
logger.LogError(
276272
ex,
277273
"Failed to finalize LTD raffle winner for player {PlayerId} in series {SeriesId}",
278274
playerId,
@@ -331,7 +327,7 @@ private static List<WalletDebitRequest> BuildDebits(CatalogOfferSnapshot offer)
331327

332328
private async Task<double> CalculateWeightAsync(int playerId, CancellationToken ct)
333329
{
334-
var playerGrain = _grainFactory.GetPlayerGrain(PlayerId.Parse(playerId));
330+
var playerGrain = grainFactory.GetPlayerGrain(PlayerId.Parse(playerId));
335331
var summary = await playerGrain.GetSummaryAsync(ct);
336332
var profile = await playerGrain.GetExtendedProfileSnapshotAsync(ct);
337333

@@ -345,7 +341,7 @@ private async Task<double> CalculateWeightAsync(int playerId, CancellationToken
345341

346342
if (needsDbQuery)
347343
{
348-
await using var db = await _dbCtxFactory.CreateDbContextAsync(ct);
344+
await using var db = await dbCtxFactory.CreateDbContextAsync(ct);
349345

350346
if (cfg.BadgeCount.Enabled)
351347
{
@@ -435,7 +431,7 @@ private static HashSet<int> SelectWeighted(List<KeyValuePair<int, double>> entri
435431

436432
public async Task ReloadSeriesAsync(CancellationToken ct)
437433
{
438-
await using var db = await _dbCtxFactory.CreateDbContextAsync(ct);
434+
await using var db = await dbCtxFactory.CreateDbContextAsync(ct);
439435

440436
var entity = await db
441437
.LtdSeries.AsNoTracking()
@@ -461,7 +457,7 @@ public async Task ReloadSeriesAsync(CancellationToken ct)
461457

462458
private async Task PersistFinishedAsync()
463459
{
464-
await using var db = await _dbCtxFactory.CreateDbContextAsync();
460+
await using var db = await dbCtxFactory.CreateDbContextAsync();
465461

466462
await db
467463
.LtdSeries.Where(s => s.Id == (int)this.GetPrimaryKeyLong())
@@ -470,11 +466,11 @@ await db
470466

471467
private async Task NotifyLoserAsync(int playerId, LtdRaffleResultCode resultCode)
472468
{
473-
var product = _catalogService
469+
var product = catalogService
474470
.GetCatalogSnapshot(CatalogType.Normal)
475471
.ProductsById.Values.FirstOrDefault(p => p.LtdSeriesId == _series?.Id);
476472

477-
await _grainFactory
473+
await grainFactory
478474
.GetPlayerPresenceGrain(playerId)
479475
.SendComposerAsync(
480476
new LtdRaffleResultMessageComposer
@@ -487,7 +483,7 @@ await _grainFactory
487483

488484
private async Task PersistEntryAsync(int playerId, string batchId, CancellationToken ct)
489485
{
490-
await using var db = await _dbCtxFactory.CreateDbContextAsync(ct);
486+
await using var db = await dbCtxFactory.CreateDbContextAsync(ct);
491487

492488
db.LtdRaffleEntries.Add(
493489
new LtdRaffleEntryEntity

0 commit comments

Comments
 (0)