2
0

Make cachedPublications private with getter-setter

This commit is contained in:
Glax 2024-04-22 22:43:42 +02:00
parent daba940b45
commit 762da4c859
10 changed files with 34 additions and 18 deletions

View File

@ -14,7 +14,7 @@ public abstract class GlobalBase
protected TrangaSettings settings { get; init; } protected TrangaSettings settings { get; init; }
protected HashSet<NotificationConnector> notificationConnectors { get; init; } protected HashSet<NotificationConnector> notificationConnectors { get; init; }
protected HashSet<LibraryConnector> libraryConnectors { get; init; } protected HashSet<LibraryConnector> libraryConnectors { get; init; }
protected Dictionary<string, Manga> cachedPublications { get; init; } private Dictionary<string, Manga> cachedPublications { get; init; }
public static readonly NumberFormatInfo numberFormatDecimalPoint = new (){ NumberDecimalSeparator = "." }; public static readonly NumberFormatInfo numberFormatDecimalPoint = new (){ NumberDecimalSeparator = "." };
protected static readonly Regex baseUrlRex = new(@"https?:\/\/[0-9A-z\.-]+(:[0-9]+)?"); protected static readonly Regex baseUrlRex = new(@"https?:\/\/[0-9A-z\.-]+(:[0-9]+)?");
@ -36,6 +36,29 @@ public abstract class GlobalBase
this.cachedPublications = new(); this.cachedPublications = new();
} }
protected void AddMangaToCache(Manga manga)
{
if (!this.cachedPublications.TryAdd(manga.internalId, manga))
{
Log($"Overwriting Manga {manga.internalId}");
this.cachedPublications[manga.internalId] = manga;
}
}
protected Manga? GetCachedManga(string internalId)
{
return cachedPublications.TryGetValue(internalId, out Manga manga) switch
{
true => manga,
_ => null
};
}
protected IEnumerable<Manga> GetAllCachedManga()
{
return cachedPublications.Values;
}
protected void Log(string message) protected void Log(string message)
{ {
logger?.WriteLine(this.GetType().Name, message); logger?.WriteLine(this.GetType().Name, message);

View File

@ -160,10 +160,10 @@ public class JobBoss : GlobalBase
{ {
this.jobs.FirstOrDefault(jjob => jjob.id == job.parentJobId)?.AddSubJob(job); this.jobs.FirstOrDefault(jjob => jjob.id == job.parentJobId)?.AddSubJob(job);
if (job is DownloadNewChapters dncJob) if (job is DownloadNewChapters dncJob)
cachedPublications.Add(dncJob.manga.internalId, dncJob.manga); AddMangaToCache(dncJob.manga);
} }
HashSet<string> coverFileNames = cachedPublications.Select(manga => manga.Value.coverFileNameInCache!).ToHashSet(); HashSet<string> coverFileNames = GetAllCachedManga().Select(manga => manga.coverFileNameInCache!).ToHashSet();
foreach (string fileName in Directory.GetFiles(settings.coverImageCache)) //Cleanup Unused Covers foreach (string fileName in Directory.GetFiles(settings.coverImageCache)) //Cleanup Unused Covers
{ {
if(!coverFileNames.Any(existingManga => fileName.Contains(existingManga))) if(!coverFileNames.Any(existingManga => fileName.Contains(existingManga)))

View File

@ -116,7 +116,7 @@ public class Bato : MangaConnector
Manga manga = new (sortName, authors, description, altTitles, tags, posterUrl, coverFileNameInCache, new Dictionary<string, string>(), Manga manga = new (sortName, authors, description, altTitles, tags, posterUrl, coverFileNameInCache, new Dictionary<string, string>(),
year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl);
cachedPublications.Add(manga.internalId, manga); AddMangaToCache(manga);
return manga; return manga;
} }

View File

@ -187,7 +187,7 @@ public class MangaDex : MangaConnector
status, status,
websiteUrl: $"https://mangadex.org/title/{publicationId}" websiteUrl: $"https://mangadex.org/title/{publicationId}"
); );
cachedPublications.Add(pub.internalId, pub); AddMangaToCache(pub);
return pub; return pub;
} }

View File

@ -143,7 +143,7 @@ public class MangaKatana : MangaConnector
Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links,
year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl);
cachedPublications.Add(manga.internalId, manga); AddMangaToCache(manga);
return manga; return manga;
} }

View File

@ -123,7 +123,7 @@ public class MangaLife : MangaConnector
Manga manga = new(sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, Manga manga = new(sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl,
coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); coverFileNameInCache, links, year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl);
cachedPublications.Add(manga.internalId, manga); AddMangaToCache(manga);
return manga; return manga;
} }

View File

@ -133,7 +133,7 @@ public class Manganato : MangaConnector
Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links,
year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl);
cachedPublications.Add(manga.internalId, manga); AddMangaToCache(manga);
return manga; return manga;
} }

View File

@ -179,7 +179,7 @@ public class Mangasee : MangaConnector
Manga manga = new(sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, Manga manga = new(sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl,
coverFileNameInCache, links, coverFileNameInCache, links,
year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl);
cachedPublications.Add(manga.internalId, manga); AddMangaToCache(manga);
return manga; return manga;
} }

View File

@ -120,7 +120,7 @@ public class Mangaworld: MangaConnector
Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links, Manga manga = new (sortName, authors.ToList(), description, altTitles, tags.ToArray(), posterUrl, coverFileNameInCache, links,
year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl); year, originalLanguage, publicationId, releaseStatus, websiteUrl: websiteUrl);
cachedPublications.Add(manga.internalId, manga); AddMangaToCache(manga);
return manga; return manga;
} }

View File

@ -54,14 +54,7 @@ public partial class Tranga : GlobalBase
return _connectors; return _connectors;
} }
public Manga? GetPublicationById(string internalId) public Manga? GetPublicationById(string internalId) => GetCachedManga(internalId);
{
return cachedPublications.TryGetValue(internalId, out Manga manga) switch
{
true => manga,
_ => null
};
}
public bool TryGetPublicationById(string internalId, out Manga? manga) public bool TryGetPublicationById(string internalId, out Manga? manga)
{ {