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,14 @@
using InfluxDB.Client;
namespace PARR.Core.Common.Interfaces
{
/// <summary>
/// Сервис взаимодействия с InfluxDb
/// </summary>
public interface IInfluxDbService
{
Task<T> QueryAsync<T>(Func<QueryApi, Task<T>> action, string token);
bool Write(Action<WriteApi> action, string token);
}
}

View File

@@ -0,0 +1,16 @@
namespace PARR.Core.Common.Interfaces
{
//public delegate Task IntervalHandlerDelegate();
public interface IIntervalService
{
/// <summary>
/// Метод выполняется с интервалом
/// </summary>
/// <param name="handler">Метод который нужно выполнить</param>
/// <param name="interval">Интервал</param>
/// <returns></returns>
Task IntervalInitAsync(Func<Task> handler, TimeSpan interval);
//Task IntervalInitAsync(IntervalHandlerDelegate intervalHandler, TimeSpan interval);
}
}

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
}
}

View File

@@ -0,0 +1,7 @@
namespace PARR.Core.Common.Interfaces
{
public interface ITransformService
{
T? GetModelFromJson<T>(string str);
}
}

View File

@@ -0,0 +1,22 @@
using PARR.Domain.DTOs.RabbitApi;
using PARR.Domain.Settings;
namespace PARR.Core.Common.Interfaces.RabbitServices
{
public interface IRabbitAdminService
{
/// <summary>
/// Получить статистику соединений из RabbitMQ
/// </summary>
/// <param name="mqSettings"></param>
/// <returns></returns>
Task<RabbitApiResult> GetConnectionsAsync(IMqSettings mqSettings);
/// <summary>
/// Получить статистику по очередям из RabbitMQ
/// </summary>
/// <param name="mqSettings"></param>
/// <returns></returns>
Task<RabbitApiResult> GetQueuesAsync(IMqSettings mqSettings);
}
}

View File

@@ -0,0 +1,29 @@
using PARR.Domain.Common.Rabbit;
using PARR.Domain.Settings;
namespace PARR.Core.Common.Interfaces.RabbitServices
{
public delegate Task MqMessageHandlerDelegate(string msg);
public interface IRabbitService : IAsyncDisposable
{
Task<bool> InitConsumerAsync(IMqSettings mqSettings, MqMessageHandlerDelegate messageHandler);
/// <summary>
/// Отправить сообщение в очередь используя список строк
/// !!! Избавиться от этого метода, вместо него использовать со списком объектов !!!
/// </summary>
/// <param name="mqSettings"></param>
/// <param name="msgList"></param>
/// <returns></returns>
Task<RabbitSendResult> SendAsync(IMqSettings mqSettings, string[] msgList);
/// <summary>
/// Отправить сообщение в очередь используя список объектов
/// </summary>
/// <param name="mqSettings"></param>
/// <param name="msgObjectList"></param>
/// <returns></returns>
Task<RabbitSendResult> SendAsync(IMqSettings mqSettings, List<object> msgObjectList);
}
}