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 8819372 commit 893b924
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 @@ -4,6 +4,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 @@ -84,10 +85,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 @@ -107,5 +107,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 893b924

Please sign in to comment.