fix: factory falls back to design-time dummy; remove CI dummy-file step and creds-env cp lines
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
using NetBlocks.Utilities.Environment;
|
||||
|
||||
namespace DeepDrftData.Data;
|
||||
|
||||
@@ -7,23 +8,21 @@ public class DeepDrftContextFactory : IDesignTimeDbContextFactory<DeepDrftContex
|
||||
{
|
||||
public DeepDrftContext CreateDbContext(string[] args)
|
||||
{
|
||||
// Load the real connection string from environment/connections.json — the same
|
||||
// file DeepDrftPublic's Program.cs loads via CredentialTools. When EF tools run with
|
||||
// --startup-project DeepDrftPublic, the working directory resolves there, so this
|
||||
// relative path works without any env var configuration.
|
||||
const string relPath = "environment/connections.json";
|
||||
if (!File.Exists(relPath))
|
||||
throw new FileNotFoundException(
|
||||
$"'{relPath}' not found. Run EF commands with --startup-project DeepDrftPublic " +
|
||||
$"from the solution root (current dir: {Directory.GetCurrentDirectory()}).", relPath);
|
||||
var path = CredentialTools.ResolvePath("connections", "environment/connections.json");
|
||||
|
||||
using var doc = System.Text.Json.JsonDocument.Parse(File.ReadAllText(relPath));
|
||||
var connectionString = doc.RootElement
|
||||
.GetProperty("ConnectionStrings")
|
||||
.GetProperty("DefaultConnection")
|
||||
.GetString()
|
||||
?? throw new InvalidOperationException(
|
||||
"ConnectionStrings:DefaultConnection not found in environment/connections.json");
|
||||
string? connectionString = null;
|
||||
if (File.Exists(path))
|
||||
{
|
||||
using var doc = System.Text.Json.JsonDocument.Parse(File.ReadAllText(path));
|
||||
connectionString = doc.RootElement
|
||||
.GetProperty("ConnectionStrings")
|
||||
.GetProperty("DefaultConnection")
|
||||
.GetString();
|
||||
}
|
||||
|
||||
// Fall back to a design-time dummy — the bundle only needs the provider/schema,
|
||||
// not a live connection. This removes the requirement to write a dummy file in CI.
|
||||
connectionString ??= "Host=localhost;Database=deepdrft-design-time;Username=dummy";
|
||||
|
||||
var optionsBuilder = new DbContextOptionsBuilder<DeepDrftContext>();
|
||||
optionsBuilder.UseNpgsql(connectionString);
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
</PackageReference>
|
||||
<!-- Npgsql 10.0.1 requires Microsoft.EntityFrameworkCore >= 10.0.4; keep in sync -->
|
||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
|
||||
<PackageReference Include="Cerebellum.NetBlocks" Version="10.3.30" />
|
||||
<PackageReference Include="Cerebellum.BlazorBlocks.Data" Version="10.3.30" />
|
||||
<PackageReference Include="Cerebellum.BlazorBlocks.Data.Postgres" Version="10.3.30" />
|
||||
</ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user