feat: normalize subscription architecture, integrate pgvector, and implement Stripe webhook subscription management.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Pgvector.EntityFrameworkCore;
|
||||
|
||||
namespace NexusReader.Infrastructure.Persistence;
|
||||
|
||||
public class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
|
||||
{
|
||||
public AppDbContext CreateDbContext(string[] args)
|
||||
{
|
||||
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Development";
|
||||
|
||||
// Try to find the Web project directory by looking for the solution root
|
||||
var currentDir = new DirectoryInfo(Directory.GetCurrentDirectory());
|
||||
while (currentDir != null && !File.Exists(Path.Combine(currentDir.FullName, "NexusReader.slnx")))
|
||||
{
|
||||
currentDir = currentDir.Parent;
|
||||
}
|
||||
|
||||
var basePath = currentDir != null
|
||||
? Path.Combine(currentDir.FullName, "src", "NexusReader.Web.New")
|
||||
: Directory.GetCurrentDirectory();
|
||||
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.SetBasePath(basePath)
|
||||
.AddJsonFile("appsettings.json", optional: true)
|
||||
.AddJsonFile($"appsettings.{environment}.json", optional: true)
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
|
||||
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
|
||||
var connectionString = configuration.GetConnectionString("PostgresConnection");
|
||||
|
||||
if (string.IsNullOrEmpty(connectionString))
|
||||
{
|
||||
// For design time, if no PG connection is found, we might be using Sqlite or just testing
|
||||
connectionString = "Host=localhost;Database=nexus_reader;Username=postgres;Password=postgres";
|
||||
}
|
||||
|
||||
optionsBuilder.UseNpgsql(connectionString, x => x.UseVector());
|
||||
|
||||
return new AppDbContext(optionsBuilder.Options);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user