refactor(infra): move database path logic into app context

This commit is contained in:
Stevan Freeborn
2026-02-06 06:45:42 -06:00
parent 88b950fea3
commit f8506981be
2 changed files with 9 additions and 10 deletions
+9 -5
View File
@@ -1,21 +1,25 @@
namespace FiscalOS.Infra.Data; namespace FiscalOS.Infra.Data;
public sealed class AppDbContext(IOptions<AppDbContextOptions> ctxOptions) : DbContext public sealed class AppDbContext(
IOptions<AppDbContextOptions> ctxOptions,
IFileSystem fileSystem
) : DbContext
{ {
private const string DataSourceKey = "Data Source="; private const string DataSourceKey = "Data Source=";
private readonly AppDbContextOptions _ctxOptions = ctxOptions.Value; private readonly AppDbContextOptions _ctxOptions = ctxOptions.Value;
private readonly IFileSystem _fileSystem = fileSystem;
public DbSet<User> Users => Set<User>(); public DbSet<User> Users => Set<User>();
public DbSet<RefreshToken> RefreshTokens => Set<RefreshToken>(); public DbSet<RefreshToken> RefreshTokens => Set<RefreshToken>();
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
var dbPath = _ctxOptions.GetFullyQualifiedDatabasePath(); var dbPath = _fileSystem.Path.GetFullPath(_ctxOptions.DatabaseFilePath, AppContext.BaseDirectory);
var dbDirectory = Path.GetDirectoryName(dbPath) ?? throw new InvalidOperationException("Database directory path could not be determined."); var dbDirectory = _fileSystem.Path.GetDirectoryName(dbPath) ?? throw new InvalidOperationException("Database directory path could not be determined.");
if (Directory.Exists(dbDirectory) is false) if (_fileSystem.Directory.Exists(dbDirectory) is false)
{ {
Directory.CreateDirectory(dbDirectory); _fileSystem.Directory.CreateDirectory(dbDirectory);
} }
var connectionString = $"{DataSourceKey}{dbPath}"; var connectionString = $"{DataSourceKey}{dbPath}";
@@ -3,11 +3,6 @@ namespace FiscalOS.Infra.Data;
public sealed record AppDbContextOptions public sealed record AppDbContextOptions
{ {
public string DatabaseFilePath { get; init; } = string.Empty; public string DatabaseFilePath { get; init; } = string.Empty;
public string GetFullyQualifiedDatabasePath()
{
return Path.GetFullPath(DatabaseFilePath, AppContext.BaseDirectory);
}
} }
public sealed record AppDbContextOptionsSetup : IConfigureOptions<AppDbContextOptions> public sealed record AppDbContextOptionsSetup : IConfigureOptions<AppDbContextOptions>