using Microsoft.Data.Sqlite; using Microsoft.Extensions.Options; using MxGateway.Server.Configuration; namespace MxGateway.Server.Security.Authentication; /// /// Factory for creating SQLite connections to the authentication store. /// public sealed class AuthSqliteConnectionFactory(IOptions options) { /// /// Creates and configures a SQLite connection to the auth database. /// public SqliteConnection CreateConnection() { string sqlitePath = options.Value.Authentication.SqlitePath; string? directory = Path.GetDirectoryName(sqlitePath); if (!string.IsNullOrWhiteSpace(directory)) { Directory.CreateDirectory(directory); } SqliteConnectionStringBuilder builder = new() { DataSource = sqlitePath, Mode = SqliteOpenMode.ReadWriteCreate }; return new SqliteConnection(builder.ToString()); } }