feat: work on setting up database

This commit is contained in:
Stevan Freeborn
2024-08-18 20:16:38 -05:00
parent f9e6e54db6
commit 3c809de5dc
19 changed files with 745 additions and 1 deletions
@@ -0,0 +1,40 @@
using System.Reflection;
using Microsoft.Data.Sqlite;
namespace SanctionsSearch.Worker.Persistence;
class AppDbContext(IOptionsSnapshot<DbOptions> options) : DbContext, IDisposable
{
private readonly IOptionsSnapshot<DbOptions> _options = options;
private SqliteConnection? _connection;
public DbSet<Sdn> Sdns { get; set; } = default!;
public DbSet<Address> Addresses { get; set; } = default!;
public DbSet<Alias> Aliases { get; set; } = default!;
public DbSet<Comment> Comments { get; set; } = default!;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var folder = Environment.SpecialFolder.LocalApplicationData;
var path = Environment.GetFolderPath(folder);
var dataDir = Path.Combine(path, "SanctionsSearch", "Data");
if (Directory.Exists(dataDir) == false)
{
Directory.CreateDirectory(dataDir);
}
var dbPath = Path.Combine(dataDir, _options.Value.DatabaseName);
_connection = new SqliteConnection($"Data Source={dbPath}");
_connection.Open();
optionsBuilder.UseSqlite(_connection);
}
public override void Dispose()
{
_connection?.Dispose();
base.Dispose();
}
}