Mds.Libraries.CSharp.Db.Postgres 2.3.0-beta.97958

Mds.Libraries.CSharp.Db.Postgres

Пакет для более удобной работы с Postgres.

Пакет содержит:

  • Расширенный HealthCheck для Postgres
  • Механизм для конфигурации подключения HealthCheck через IPostgresConnectionHandler
  • Стратегию повторных запросов к базе данных RetryingExecutionStrategy

HealthCheck

В проекте реализован расширенный HealthCheck, который позволяет проверить все хосты, которые указаны в строке подключения. И проверить доступность каждого хоста из строки подключения.

Настройка HealthCheck, должно решить проблему отсутвия базы данных, если она еще не создана.


var postgresConnectionString = /* ... */;

services.AddHealthChecks()

        .AddMdsPostgresHealthCheck(
            postgresConnectionString: postgresConnectionString,
            name: "Postgres",
            tags: new[] { "db", "postgres" })

// ...

// Обязательно надо добавить сервис для проверки доступности Postgres
services.AddMdsPostgresHealthCheckServices();

Конфигурация через IPostgresConnectionHandler

Этот механизм позволяет конфигурировать подключение к Postgres. Этот механизм используется для подготовки подключения в AddMdsPostgresHealthCheck. Основной кейс применения, для которого это было разработано - конфигурация проверки удаленного TLS сертификата.

Пример использования

Готовим обработчик:

internal class SamplePostgresConnectionHandler : IPostgresConnectionHandler
{

    public SamplePostgresConnectionHandler() { }
    

    #region IPostgresConnectionHandler

    void IPostgresConnectionHandler.Configure(PostgresConnectionSettings settings)
    {
        // ...
    }

    #endregion IPostgresConnectionHandler
}

Регистрируем обработчик в DI:

services.AddTransient<IPostgresConnectionHandler, SamplePostgresConnectionHandler>();

После данных манипуляций этот обработчик будет инстанцирован, когда необходимо будет сконфигурировать подключение через DI. Обработчиков может быть много. Отработает каждый.

RetryingExecutionStrategy

Стратегия позволяет выполнять повтоные запросы к базе данных при неуспешных выполнениях запросов, в соответствии с переданными параметрами.

Пример подключения стратегии:


protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    base.OnConfiguring(optionsBuilder);

    optionsBuilder.UseNpgsql(_connectionString, builder =>
    {
        if (_retrySettings is not null && _retrySettings.UseRetry)
        {
            builder.ExecutionStrategy(dependencies => new RetryingExecutionStrategy(
                dependencies,
                _retrySettings.MaxRetryCount,
                _retrySettings.MaxRetryDelay,
                _retrySettings.UseDefaultErrorCodes,
                _retrySettings.UseDefaultPatterns,
                _retrySettings.ErrorCodesForRetry,
                _retrySettings.PatternsForRetry));
        }
        // ...
     }

     // ...
}

No packages depend on Mds.Libraries.CSharp.Db.Postgres.

Version Downloads Last updated
2.4.2 1 02/28/2026
2.4.1 1 02/28/2026
2.4.0 1 02/28/2026
2.4.0-beta.101944 1 02/28/2026
2.3.0 1 02/28/2026
2.3.0-beta.98060 1 02/28/2026
2.3.0-beta.97958 1 02/28/2026
2.2.0 1 02/28/2026
2.1.2 1 02/28/2026
2.1.1 1 02/28/2026
2.1.0 1 02/28/2026
2.0.0 1 02/28/2026
1.0.3 1 02/28/2026