Add image management functionality: introduce Image entity and related API endpoints, update database schema to support image storage, and enhance UI with a new gallery feature for image selection and upload. Update translations for gallery-related terms.
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
namespace TeleWave.Domain.Images;
|
||||
|
||||
/// <summary>
|
||||
/// Запись общего реестра изображений приложения. Единая точка для всех картинок (постеры шоу, кадры
|
||||
/// серий, фоны заставок, ручные загрузки) — файл лежит под images/{Id}{FileExtension}, а потребители
|
||||
/// ссылаются на <see cref="Id"/>. Позволяет иметь общую галерею с вкладками по <see cref="Category"/>.
|
||||
/// </summary>
|
||||
public class Image
|
||||
{
|
||||
public Guid Id { get; private set; }
|
||||
|
||||
public ImageCategory Category { get; private set; }
|
||||
|
||||
/// <summary>Расширение файла с точкой в нижнем регистре (например «.jpg»).</summary>
|
||||
public string FileExtension { get; private set; } = string.Empty;
|
||||
|
||||
/// <summary>Имя исходного файла (для ручных загрузок) или описательная метка — для показа в галерее.</summary>
|
||||
public string? OriginalFileName { get; private set; }
|
||||
|
||||
public DateTimeOffset CreatedAt { get; private set; }
|
||||
|
||||
private Image() { }
|
||||
|
||||
public static Image Create(ImageCategory category, string fileExtension, string? originalFileName) =>
|
||||
new()
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Category = category,
|
||||
FileExtension = Normalize(fileExtension),
|
||||
OriginalFileName = string.IsNullOrWhiteSpace(originalFileName) ? null : originalFileName.Trim(),
|
||||
CreatedAt = DateTimeOffset.UtcNow,
|
||||
};
|
||||
|
||||
private static string Normalize(string extension)
|
||||
{
|
||||
var ext = extension.Trim().ToLowerInvariant();
|
||||
return ext.StartsWith('.') ? ext : "." + ext;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace TeleWave.Domain.Images;
|
||||
|
||||
/// <summary>Категория изображения в общей галерее (вкладка). Определяет, откуда картинка пришла/где используется.</summary>
|
||||
public enum ImageCategory
|
||||
{
|
||||
/// <summary>Загружено напрямую в галерею, не привязано к конкретной сущности.</summary>
|
||||
Library,
|
||||
|
||||
/// <summary>Постер шоу.</summary>
|
||||
ShowPoster,
|
||||
|
||||
/// <summary>Кадр серии.</summary>
|
||||
EpisodeStill,
|
||||
|
||||
/// <summary>Фон блока ТВ-заставки.</summary>
|
||||
BumperBackground,
|
||||
}
|
||||
Reference in New Issue
Block a user