feat: Перенесены внешние сервисы в Infrastructure. Удалены лишние проекты.

This commit is contained in:
Mikhail Trubnikov
2026-04-14 16:27:27 +10:00
parent 13dd2815d4
commit 188ebc20a0
159 changed files with 354 additions and 1389 deletions

View File

@@ -0,0 +1,135 @@
namespace PARR.Core.Common.Interfaces
{
/// <summary>
/// Сервис по управлению КЭШ
/// </summary>
public interface IRedisCacheService
{
/// <summary>
/// Получить кэшированные данные
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
T? GetCachedData<T>(string key);
/// <summary>
/// Получить кэшированные данные асинхронно
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
Task<T?> GetCachedDataAsync<T>(string key);
/// <summary>
/// Добавить в кэш данные
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="data"></param>
/// <param name="cacheDuration"></param>
void SetCachedData<T>(string key, T data, TimeSpan cacheDuration);
/// <summary>
/// Добавить в кэш данные асинхронно
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="data"></param>
/// <param name="cacheDuration"></param>
/// <returns></returns>
Task SetCachedDataAsync<T>(string key, T data, TimeSpan cacheDuration);
/// <summary>
/// Удалить кэшированные данные
/// </summary>
/// <param name="key"></param>
void DeleteCachedData(string key);
/// <summary>
/// Удалить кэшированные данные асинхронно
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
Task DeleteCachedDataAsync(string key);
/// <summary>
/// Сгенерировать уникальный ключ
/// </summary>
/// <param name="keyParts"></param>
/// <param name="keyPartsToHash"></param>
/// <returns></returns>
string GetKey(string[] keyParts, string[]? keyPartsToHash = null);
#region Работа с Hash
/// <summary>
/// Изменить одно поле в Hash
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="hashKey"></param>
/// <param name="field"></param>
/// <param name="value"></param>
/// <param name="ttl">Если указано, обновится у всего Hash. Если не указано и hash не существовал, создастся Hash с бесокнечным ttl</param>
/// <returns></returns>
Task SetHashFieldAsync<T>(string hashKey, string field, T value, TimeSpan? ttl = null);
/// <summary>
/// Получить значение поля из Hash
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="hashKey"></param>
/// <param name="field"></param>
/// <returns></returns>
Task<T?> GetHashFieldAsync<T>(string hashKey, string field);
/// <summary>
/// Получить все значения из Hash
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="hashKey"></param>
/// <returns></returns>
Task<Dictionary<string, T>> GetAllHashFieldsAsync<T>(string hashKey);
/// <summary>
/// Удалить одну запись из Hash
/// </summary>
/// <param name="hashKey"></param>
/// <param name="field"></param>
/// <returns></returns>
Task DeleteHashFieldAsync(string hashKey, string field);
/// <summary>
/// Есть ли запись в Hash
/// </summary>
/// <param name="hashKey"></param>
/// <param name="field"></param>
/// <returns></returns>
Task<bool> HashFieldExistsAsync(string hashKey, string field);
/// <summary>
/// Удалить весь Hash
/// </summary>
/// <param name="hashKey"></param>
/// <returns></returns>
Task DeleteHashAsync(string hashKey);
/// <summary>
/// Получить количество записей в Hash
/// </summary>
/// <param name="hashKey"></param>
/// <returns></returns>
Task<long> GetHashLengthAsync(string hashKey);
/// <summary>
/// Установить TTL для Hash
/// </summary>
/// <param name="hashKey"></param>
/// <param name="ttl"></param>
/// <returns></returns>
Task SetHashTtlAsync(string hashKey, TimeSpan ttl);
#endregion
}
}