Added more UI logic. Added a manga pipeline test.

This commit is contained in:
2025-06-04 02:21:30 -04:00
parent 7dbcdc6169
commit 70513559cb
21 changed files with 264 additions and 73 deletions

View File

@@ -7,8 +7,12 @@ namespace MangaReader.Core.Pipeline;
public partial class MangaPipeline(MangaContext context) : IMangaPipeline
{
public async Task RunAsync(SourceManga sourceManga)
public async Task RunAsync(MangaPipelineRequest request)
{
string sourceName = request.SourceName;
SourceManga sourceManga = request.SourceManga;
Source source = await GetOrAddSourceAsync(sourceName);
Manga manga = await GetOrAddMangaAsync(sourceManga);
foreach (SourceMangaTitle alternateTitle in sourceManga.AlternateTitles)
@@ -29,6 +33,23 @@ public partial class MangaPipeline(MangaContext context) : IMangaPipeline
context.SaveChanges();
}
private async Task<Source> GetOrAddSourceAsync(string sourceName)
{
Source? source = await context.Sources.FirstOrDefaultAsync(s => s.Name == sourceName);
if (source != null)
return source;
source = new()
{
Name = sourceName
};
context.Sources.Add(source);
return source;
}
private async Task<Manga> GetOrAddMangaAsync(SourceManga sourceManga)
{
Manga? manga = await context.Mangas.FirstOrDefaultAsync(manga => manga.Title == sourceManga.Title);
@@ -65,7 +86,7 @@ public partial class MangaPipeline(MangaContext context) : IMangaPipeline
private async Task AddTitleAsync(Manga manga, SourceMangaTitle sourceMangaTitle)
{
MangaTitle? mangaTitle = await context.MangaTitles.FirstOrDefaultAsync(mt =>
mt.Manga == manga && mt.TitleEntry == sourceMangaTitle.Title);
mt.Manga == manga && mt.Name == sourceMangaTitle.Title);
if (mangaTitle != null)
return;
@@ -73,7 +94,7 @@ public partial class MangaPipeline(MangaContext context) : IMangaPipeline
mangaTitle = new()
{
Manga = manga,
TitleEntry = sourceMangaTitle.Title,
Name = sourceMangaTitle.Title,
};
context.MangaTitles.Add(mangaTitle);