Update scheduling parameters and refactor channel endpoints: extend HorizonDays to 7 and RetentionDays to 90 in appsettings.json. Consolidate channel-related endpoint logic by removing obsolete files and enhancing the ShowEndpoints with audience and genre management capabilities. Improve error handling and streamline command handlers for channel operations.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
namespace TeleWave.Domain.Library;
|
||||
|
||||
/// <summary>
|
||||
/// Вариант написания жанра для сопоставления с внешними источниками. Хранит уже нормализованное
|
||||
/// значение (см. <see cref="Normalize"/>), поэтому поиск — это точное сравнение, без LIKE и без
|
||||
/// приведения регистра на стороне БД.
|
||||
///
|
||||
/// Формы значения: числовой идентификатор провайдера (<c>tmdb:28</c>) либо имя жанра на любом языке
|
||||
/// (<c>action</c>, <c>боевик</c>, <c>sci-fi</c>). Один жанр справочника собирает под собой сколько
|
||||
/// угодно вариантов — так «Action» и «Action & Adventure» из TMDb сводятся к одному «Боевику».
|
||||
/// </summary>
|
||||
public class GenreAlias
|
||||
{
|
||||
public Guid Id { get; private set; }
|
||||
public Guid GenreId { get; private set; }
|
||||
|
||||
/// <summary>Нормализованное значение — уникально по всему справочнику.</summary>
|
||||
public string Value { get; private set; } = string.Empty;
|
||||
|
||||
private GenreAlias() { }
|
||||
|
||||
internal static GenreAlias Create(Guid genreId, string value) =>
|
||||
new()
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
GenreId = genreId,
|
||||
Value = Normalize(value),
|
||||
};
|
||||
|
||||
/// <summary>Приводит написание к каноничному виду: нижний регистр, схлопнутые пробелы, без краёв.</summary>
|
||||
public static string Normalize(string? value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
return string.Empty;
|
||||
|
||||
var trimmed = value.Trim().ToLowerInvariant();
|
||||
return string.Join(
|
||||
' ',
|
||||
trimmed.Split(' ', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>Псевдоним по идентификатору жанра во внешнем источнике (<c>tmdb:28</c>).</summary>
|
||||
public static string ProviderKey(string provider, string externalId) =>
|
||||
Normalize($"{provider}:{externalId}");
|
||||
}
|
||||
Reference in New Issue
Block a user