/
ilyakos
/
ChatWithAI
Обзор
Документация
Войти
/
ilyakos
/
ChatWithAI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ChatWithAI.Database/Repositories/IRepository.cs
46 строк
3 KB
ilyakos
feat: Добавляет базовую инфраструктуру сущностей с мягким удалением
22 май 2026, 20:52
22 май 2026, 20:52
2ec3012
Код
Авторство
О чём код?
using ChatWithAI.Database.Models; namespace ChatWithAI.Database.Repositories; /// <summary> /// Универсальный интерфейс репозитория для сущностей, наследующих <see cref="BaseEntity"/>. /// Предоставляет стандартные операции CRUD с поддержкой мягкого удаления. /// Удалённые записи (<c>IsDeleted = true</c>) во всех методах автоматически исключаются /// глобальным фильтром EF Core, заданным в <c>AppDbContext.OnModelCreating</c>. /// </summary> /// <typeparam name="T">Тип сущности, производный от <see cref="BaseEntity"/>.</typeparam> public interface IRepository<T> where T : BaseEntity { /// <summary> /// Возвращает активную запись по уникальному идентификатору. /// </summary> /// <param name="id">Идентификатор записи.</param> /// <returns>Сущность или <c>null</c>, если не найдена либо удалена.</returns> Task<T?> GetByIdAsync(Guid id); /// <summary> /// Возвращает все активные записи таблицы без отслеживания изменений. /// </summary> /// <returns>Перечисление активных сущностей.</returns> Task<IEnumerable<T>> GetAllAsync(); /// <summary> /// Добавляет новую сущность в контекст. /// Для сохранения в базу необходимо вызвать <see cref="SaveChangesAsync"/>. /// </summary> /// <param name="entity">Экземпляр сущности для добавления.</param> Task AddAsync(T entity); /// <summary> /// Выполняет мягкое удаление: устанавливает <c>IsDeleted = true</c> и <c>DeletedAt = UtcNow</c>. /// Запись остаётся в таблице, но перестаёт быть видимой через стандартные запросы. /// Если запись не найдена — метод завершается без ошибки. /// </summary> /// <param name="id">Идентификатор удаляемой записи.</param> Task SoftDeleteAsync(Guid id); /// <summary> /// Сохраняет все ожидающие изменения в базу данных. /// </summary> Task SaveChangesAsync(); }