Skip to content

Commit

Permalink
Fix: Unable to use a different postgres schema (Fix #5901)
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasDorier committed Apr 15, 2024
1 parent 172dd50 commit c78ee24
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions BTCPayServer.Abstractions/Contracts/BaseDbContextFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.Extensions.Options;
using Npgsql;
using Npgsql.EntityFrameworkCore.PostgreSQL.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Operations;

Expand Down Expand Up @@ -85,10 +86,9 @@ public void ConfigureBuilder(DbContextOptionsBuilder builder)
{
o.EnableRetryOnFailure(10);
o.SetPostgresVersion(12, 0);
if (!string.IsNullOrEmpty(_schemaPrefix))
{
o.MigrationsHistoryTable(_schemaPrefix);
}
var mainSearchPath = GetSearchPath(_options.Value.ConnectionString);
var schemaPrefix = string.IsNullOrEmpty(_schemaPrefix) ? "__EFMigrationsHistory" : _schemaPrefix;
o.MigrationsHistoryTable(schemaPrefix, mainSearchPath);
})
.ReplaceService<IMigrationsSqlGenerator, CustomNpgsqlMigrationsSqlGenerator>();
break;
Expand All @@ -108,5 +108,11 @@ public void ConfigureBuilder(DbContextOptionsBuilder builder)
}
}

private string GetSearchPath(string connectionString)
{
var connectionStringBuilder = new NpgsqlConnectionStringBuilder(connectionString);
var searchPaths = connectionStringBuilder.SearchPath?.Split(',');
return searchPaths is not { Length: > 0 } ? null : searchPaths[0];
}
}
}

0 comments on commit c78ee24

Please sign in to comment.