49 lines
3.3 KiB
Markdown
49 lines
3.3 KiB
Markdown
# Persistence Client Nuget Readme
|
||
## Краткое описание Persistence сервиса
|
||
Persistence сервис отвечает за работу с хранимыми данными
|
||
в рамках совокупности различных систем.
|
||
|
||
## Описание пакета
|
||
Данный пакет предоставляет возможность взаимодействия с
|
||
Persistence сервисом посредством обращения к конкретному
|
||
клиенту, ответственному за работу с одной из областей сервиса.
|
||
|
||
## Список предоставляемых клиентов
|
||
- `ISetpointClient` - Клиент для работы с уставками
|
||
- `ITechMessagesClient` - Клиент для работы с технологическими сообщениями
|
||
- `ITimeSeriesClient` - Клиент для работы с временными данными
|
||
- `ITimestampedSetClient` - Клиент для работы с данными с отметкой времени
|
||
- `IChangeLogClient` - Клиент для работы с записями ChangeLog
|
||
- `IWitsDataClient` - Клиент для работы с параметрами Wits
|
||
- `IDataSourceSystemClient` - Клиент для работы с системами
|
||
|
||
## Использование
|
||
Для получения того или иного Persistence - клиента нужно
|
||
обращаться к фабрике Persistence клиентов - `PersistenceClientFactory`. Для этого требуется:
|
||
1. Добавить в проект фабрику HTTP - клиентов `IHttpClientFactory`.
|
||
<br>Она должна предоставлять HTTP - клиента через метод `GetClient()`.
|
||
>В том случае, если фабрика клиентов предоставляет не авторизованного клиента -
|
||
необходимо добавить в проект фабрику токенов аутентификации `IAuthTokenFactory` с методом `GetToken()`,
|
||
возвращающем токен в виде строки (без префикса `Bearer`).
|
||
|
||
2. Добавить логирование `ILoger`
|
||
3. Внедрить зависимость в проект `services.AddSingleton<PersistenceClientFactory>();` - пример.
|
||
4. Обратиться к фабрике Persistence - клиентов и получить требуемого клиента.
|
||
|
||
## xunit тестирование
|
||
При написании интеграционных тестов с использованием Persistence - клиентов
|
||
Http - клиент не обязан быть авторизован через передачу токена в `PersistenceClientFactory`.
|
||
Для осуществления тестовой авторизации достаточно добавить в `appsettings.Tests.json` :
|
||
```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"
|
||
```
|
||
При этом возможна авторизация через `KeyCloak`.
|
||
|