From f8506981be86974672a8e887aac00c7d85774838 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Fri, 6 Feb 2026 06:45:42 -0600 Subject: [PATCH] refactor(infra): move database path logic into app context --- src/FiscalOS.Infra/Data/AppDbContext.cs | 14 +++++++++----- src/FiscalOS.Infra/Data/AppDbContextOptions.cs | 5 ----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/FiscalOS.Infra/Data/AppDbContext.cs b/src/FiscalOS.Infra/Data/AppDbContext.cs index efd238e..fc2abe3 100644 --- a/src/FiscalOS.Infra/Data/AppDbContext.cs +++ b/src/FiscalOS.Infra/Data/AppDbContext.cs @@ -1,21 +1,25 @@ namespace FiscalOS.Infra.Data; -public sealed class AppDbContext(IOptions ctxOptions) : DbContext +public sealed class AppDbContext( + IOptions ctxOptions, + IFileSystem fileSystem +) : DbContext { private const string DataSourceKey = "Data Source="; private readonly AppDbContextOptions _ctxOptions = ctxOptions.Value; + private readonly IFileSystem _fileSystem = fileSystem; public DbSet Users => Set(); public DbSet RefreshTokens => Set(); protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - var dbPath = _ctxOptions.GetFullyQualifiedDatabasePath(); - var dbDirectory = Path.GetDirectoryName(dbPath) ?? throw new InvalidOperationException("Database directory path could not be determined."); + var dbPath = _fileSystem.Path.GetFullPath(_ctxOptions.DatabaseFilePath, AppContext.BaseDirectory); + 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}"; diff --git a/src/FiscalOS.Infra/Data/AppDbContextOptions.cs b/src/FiscalOS.Infra/Data/AppDbContextOptions.cs index 231cf41..3c44a36 100644 --- a/src/FiscalOS.Infra/Data/AppDbContextOptions.cs +++ b/src/FiscalOS.Infra/Data/AppDbContextOptions.cs @@ -3,11 +3,6 @@ namespace FiscalOS.Infra.Data; public sealed record AppDbContextOptions { public string DatabaseFilePath { get; init; } = string.Empty; - - public string GetFullyQualifiedDatabasePath() - { - return Path.GetFullPath(DatabaseFilePath, AppContext.BaseDirectory); - } } public sealed record AppDbContextOptionsSetup : IConfigureOptions