Refactor Channel endpoints and data models: replace jingle functionality with bumper templates, update related commands and handlers, and enhance API routes for managing bumper templates. Remove obsolete jingle-related code and adjust channel data structures to support new bumper template features.

This commit is contained in:
Leonid Pershin
2026-07-25 11:02:16 +03:00
parent 27571a4ab6
commit 84c2867062
60 changed files with 2805 additions and 1045 deletions
@@ -1,31 +1,34 @@
namespace TeleWave.Application.Common.Interfaces;
/// <summary>
/// Хранилище сырых файлов шаблона заставки канала (фон и музыка) под bumpers/{channelId}. В отличие
/// Хранилище сырых файлов блоков заставок (звук и фон-картинка) под bumpers/{templateId}. В отличие
/// от обычных ассетов эти файлы НЕ режутся на HLS — они подаются как входы в рендер заставки.
/// </summary>
public interface IBumperTemplateStorage
{
Task SaveAudioAsync(
Guid templateId,
string extension,
Stream content,
CancellationToken cancellationToken
);
Task SaveBackgroundAsync(
Guid channelId,
Guid templateId,
string extension,
Stream content,
CancellationToken cancellationToken
);
Task SaveMusicAsync(
Guid channelId,
string extension,
Stream content,
CancellationToken cancellationToken
);
void DeleteAudio(Guid templateId);
void DeleteBackground(Guid templateId);
void DeleteBackground(Guid channelId);
void DeleteMusic(Guid channelId);
/// <summary>Удалить все файлы блока (при удалении самого блока).</summary>
void DeleteTemplate(Guid templateId);
/// <summary>Абсолютный путь к загруженному фону или null (нет расширения / файл отсутствует).</summary>
string? BackgroundPath(Guid channelId, string? extension);
/// <summary>Абсолютный путь к загруженному звуку или null (нет расширения / файл отсутствует).</summary>
string? AudioPath(Guid templateId, string? extension);
/// <summary>Абсолютный путь к загруженной музыке или null.</summary>
string? MusicPath(Guid channelId, string? extension);
/// <summary>Абсолютный путь к загруженной фон-картинке или null.</summary>
string? BackgroundPath(Guid templateId, string? extension);
}