Moved relevant application layer enums and value objects to the domain layer.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
using JSMR.Application.Common;
|
||||
using JSMR.Application.Scanning.Contracts;
|
||||
using JSMR.Application.Scanning.Contracts;
|
||||
using JSMR.Application.Scanning.Ports;
|
||||
using JSMR.Domain.Entities;
|
||||
using JSMR.Domain.Enums;
|
||||
using JSMR.Infrastructure.Common.Languages;
|
||||
using JSMR.Infrastructure.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
using JSMR.Application.Common;
|
||||
using JSMR.Application.Scanning.Contracts;
|
||||
using JSMR.Application.Scanning.Contracts;
|
||||
using JSMR.Application.Scanning.Ports;
|
||||
using JSMR.Domain.Entities;
|
||||
using JSMR.Domain.Enums;
|
||||
using JSMR.Domain.ValueObjects;
|
||||
using JSMR.Infrastructure.Common.Time;
|
||||
using JSMR.Infrastructure.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
@@ -40,6 +41,7 @@ public class VoiceWorkUpdater(AppDbContext dbContext, ITimeProvider timeProvider
|
||||
string[] productIds = [.. ingests.Select(i => i.ProductId).Distinct()];
|
||||
string[] tagNames = [.. ingests.SelectMany(i => i.Tags).Distinct()];
|
||||
string[] creatorNames = [.. ingests.SelectMany(i => i.Creators).Distinct()];
|
||||
string[] seriesIdentifiers = [.. ingests.Where(i => i.Series is not null).Select(i => i.Series!.Identifier).Distinct()];
|
||||
|
||||
DateTimeOffset currentScanAnchor = GetCurrentScanAnchor();
|
||||
DateTimeOffset previousScanAnchor = PreviousScanAnchor(currentScanAnchor);
|
||||
@@ -63,6 +65,9 @@ public class VoiceWorkUpdater(AppDbContext dbContext, ITimeProvider timeProvider
|
||||
Creators: await dbContext.Creators
|
||||
.Where(cr => creatorNames.Contains(cr.Name))
|
||||
.ToDictionaryAsync(cr => cr.Name, cancellationToken),
|
||||
Series: await dbContext.Series
|
||||
.Where(s => seriesIdentifiers.Contains(s.Identifier))
|
||||
.ToDictionaryAsync(s => s.Identifier, cancellationToken),
|
||||
Results: productIds.ToDictionary(
|
||||
productId => productId,
|
||||
productId => new VoiceWorkUpsertResult()
|
||||
@@ -135,6 +140,7 @@ public class VoiceWorkUpdater(AppDbContext dbContext, ITimeProvider timeProvider
|
||||
UpsertCreators(ingest, upsertContext);
|
||||
UpsertVoiceWorkCreators(ingest, upsertContext);
|
||||
UpsertVoiceWorkSupportedLanguages(ingest, upsertContext);
|
||||
UpsertSeries(ingest, upsertContext);
|
||||
|
||||
return dbContext.Entry(voiceWork).State switch
|
||||
{
|
||||
@@ -183,6 +189,8 @@ public class VoiceWorkUpdater(AppDbContext dbContext, ITimeProvider timeProvider
|
||||
voiceWork.HasChobit = ingest.HasDLPlay;
|
||||
voiceWork.StarRating = ingest.StarRating;
|
||||
voiceWork.Votes = ingest.Votes;
|
||||
voiceWork.OriginalProductId = ingest.Translation?.OriginalProductId;
|
||||
voiceWork.AIGeneration = (byte)ingest.AI;
|
||||
voiceWork.IsValid = true;
|
||||
voiceWork.LastScannedDate = ComputeLastScannedDate(voiceWork.LastScannedDate, state, upsertContext);
|
||||
|
||||
@@ -365,7 +373,7 @@ public class VoiceWorkUpdater(AppDbContext dbContext, ITimeProvider timeProvider
|
||||
VoiceWork voiceWork = upsertContext.VoiceWorks[ingest.ProductId];
|
||||
Dictionary<string, VoiceWorkSupportedLanguage> existingLanguageLinks = voiceWork.SupportedLanguages.ToDictionary(x => x.Language);
|
||||
|
||||
foreach (ISupportedLanguage supportedLanguage in ingest.SupportedLanguages)
|
||||
foreach (SupportedLanguage supportedLanguage in ingest.SupportedLanguages)
|
||||
{
|
||||
if (!existingLanguageLinks.TryGetValue(supportedLanguage.Code, out VoiceWorkSupportedLanguage? voiceWorkSupportedLanguage))
|
||||
{
|
||||
@@ -379,4 +387,39 @@ public class VoiceWorkUpdater(AppDbContext dbContext, ITimeProvider timeProvider
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpsertSeries(VoiceWorkIngest ingest, VoiceWorkUpsertContext upsertContext)
|
||||
{
|
||||
Series? series = TryGetOrAddSeries(ingest, upsertContext);
|
||||
|
||||
VoiceWork voiceWork = upsertContext.VoiceWorks[ingest.ProductId];
|
||||
voiceWork.Series = series;
|
||||
}
|
||||
|
||||
private Series? TryGetOrAddSeries(VoiceWorkIngest ingest, VoiceWorkUpsertContext upsertContext)
|
||||
{
|
||||
if (ingest.Series is null)
|
||||
return null;
|
||||
|
||||
Circle circle = upsertContext.Circles[ingest.MakerId];
|
||||
|
||||
if (!upsertContext.Series.TryGetValue(ingest.Series.Identifier, out Series? series))
|
||||
{
|
||||
series = new Series
|
||||
{
|
||||
Name = ingest.Series.Name,
|
||||
Identifier = ingest.Series.Identifier,
|
||||
Circle = circle
|
||||
};
|
||||
|
||||
dbContext.Series.Add(series);
|
||||
upsertContext.Series[ingest.Series.Identifier] = series;
|
||||
}
|
||||
else
|
||||
{
|
||||
series.Identifier = ingest.Series.Identifier;
|
||||
}
|
||||
|
||||
return series;
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ public record VoiceWorkUpsertContext(
|
||||
Dictionary<string, VoiceWork> VoiceWorks,
|
||||
Dictionary<string, Tag> Tags,
|
||||
Dictionary<string, Creator> Creators,
|
||||
Dictionary<string, Series> Series,
|
||||
Dictionary<string, VoiceWorkUpsertResult> Results
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user