# Persistence Client Nuget Readme ## Краткое описание Persistence сервиса Persistence сервис отвечает за работу с хранимыми данными в рамках совокупности различных систем. ## Описание пакета Данный пакет предоставляет возможность взаимодействия с Persistence сервисом посредством обращения к конкретному клиенту, ответсвенному за работу с одной из областей сервиса. ## Список предоставляемых клиентов - `ISetpointClient` - Клиент для работы с уставками - `ITechMessagesClient` - Клиент для работы с технологическими сообщениями - `ITimeSeriesClient` - Клиент для работы с временными данными - `ITimestampedSetClient` - Клиент для работы с данными с отметкой времени - `IChangeLogClient` - Клиент для работы с записями ChangeLog ## Использование Для получения того или иного Persistence - клиента нужно обращаться к фабрике Persistence клиентов - `PersistenceClientFactory`. Для этого требуется: 1. Добавить в проект фабрику HTTP - клиентов `IHttpClientFactory`.
Она должна предоставлять HTTP - клиента через метод `GetClient()`. >В том случае, если фабрика клиентов предоставляет не авторизованного клиента - необходимо добавить в проект фабрику токенов аутентификации `IAuthTokenFactory` с методом `GetToken()`, возвращающем токен в виде строки (без префикса `Bearer`). 2. Добавить логирование `ILoger` 3. Внедрить зависимость в проект `services.AddSingleton();` - пример. 4. Обратиться к фабрике Persistence - клиентов и получить требуемого клиента. ## xunit тестирование При написании интеграционных тестов с ипользованием Persistence - клиентов Http - клиент не обязан быть авторизован через передачу токена в `PersistenceClientFactory`. Для осуществления тестовой авторизации достаточно добавить в `appsettings.Tests.json`. При этом возможна авторизация через `KeyCloak`. ```json "NeedUseKeyCloak": false, "AuthUser": { "username": "myuser", "password": 12345, "clientId": "webapi", "grantType": "password" }, "KeycloakGetTokenUrl": "http://192.168.0.10:8321/realms/Persistence/protocol/openid-connect/token" ```