/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Core/Features/Views/Commands/DeleteViewCommandHandler.cs
43 строки
2 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Core.Exceptions; using Gridient.Core.Repositories; using MediatR; namespace Gridient.Core.Features.Views.Commands { /// <summary> /// Обработчик команды для удаления представления /// </summary> public class DeleteViewCommandHandler : IRequestHandler<DeleteViewCommand> { private readonly ListsRepositoryFactory _factory; public DeleteViewCommandHandler(ListsRepositoryFactory factory) { _factory = factory; } public async Task Handle(DeleteViewCommand request, CancellationToken cancellationToken) { await ValidateViewBelongsToList(request.ListId, request.ViewId, cancellationToken); await _factory.ViewsRepository.RemoveByIdAsync(request.ViewId, cancellationToken); } private async Task ValidateViewBelongsToList(int listId, int viewId, CancellationToken cancellationToken) { var actualListId = await GetViewListId(viewId, cancellationToken); if (actualListId != listId) { throw ListsException.Error($"Представление с ID {viewId} не принадлежит списку с ID {listId}"); } } private async Task<int> GetViewListId(int viewId, CancellationToken cancellationToken) { var views = await _factory.ViewsRepository.GetEntitiesByQueryAsync(e => e.Id == viewId, cancellationToken); var view = views.FirstOrDefault(); if (view == null) throw ListsException.EntityNotFound(viewId); return view.ListId; } } }