update db usage and init db files

This commit is contained in:
bob
2026-05-29 13:13:11 -05:00
parent 3d3a5c2a5e
commit 286d1366fe
10 changed files with 195 additions and 33 deletions

View File

@@ -28,8 +28,13 @@ public class SkinTrackerDbContext : DbContext
public DbSet<TradeItem> TradeItems => Set<TradeItem>();
public DbSet<PriceHistory> PriceHistories => Set<PriceHistory>();
/// <summary>The PostgreSQL schema that owns all of this context's tables.</summary>
public const string Schema = "skintracker";
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(Schema);
modelBuilder.ApplyConfiguration(new SkinConfiguration());
modelBuilder.ApplyConfiguration(new SkinConditionConfiguration());
modelBuilder.ApplyConfiguration(new SteamUserConfiguration());

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace BlueLaminate.EFCore.Data;
@@ -7,15 +8,25 @@ public class SkinTrackerDbContextFactory : IDesignTimeDbContextFactory<SkinTrack
{
public SkinTrackerDbContext CreateDbContext(string[] args)
{
var connectionString =
Environment.GetEnvironmentVariable("SKINTRACKER_CONNECTION")
?? "Host=localhost;Port=5432;Database=skintracker;Username=postgres;Password=postgres";
var connectionString = BuildConfiguration().GetConnectionString("SkinTracker")
?? throw new InvalidOperationException(
"Connection string 'SkinTracker' is not configured. "
+ "Set it via user secrets (dev) or the ConnectionStrings__SkinTracker environment variable (prod).");
var options = new DbContextOptionsBuilder<SkinTrackerDbContext>()
.UseNpgsql(connectionString)
.UseNpgsql(connectionString, npgsql =>
npgsql.MigrationsHistoryTable("__EFMigrationsHistory", SkinTrackerDbContext.Schema))
.UseSnakeCaseNamingConvention()
.Options;
return new SkinTrackerDbContext(options);
}
public static IConfiguration BuildConfiguration() =>
new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true)
.AddUserSecrets<SkinTrackerDbContextFactory>(optional: true)
.AddEnvironmentVariables()
.Build();
}