From f9aa02ec1a4c24e80a206857d4f68198bb027bb4 Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 11 Nov 2024 01:12:29 +0800 Subject: HALF WORK: 2024.12.19 Re-organize file structure. --- .../CrupestApi.Commons/Crud/DbConnectionFactory.cs | 75 ---------------------- 1 file changed, 75 deletions(-) delete mode 100644 docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs') diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs deleted file mode 100644 index 701622c..0000000 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Data; -using Microsoft.Data.Sqlite; -using Microsoft.Extensions.Options; - -namespace CrupestApi.Commons.Crud; - -public interface IDbConnectionFactory -{ - IDbConnection Get(string? name = null); - bool ShouldDisposeConnection { get; } -} - -public class SqliteConnectionFactory : IDbConnectionFactory -{ - private readonly IOptionsMonitor _apiConfigMonitor; - - public SqliteConnectionFactory(IOptionsMonitor apiConfigMonitor) - { - _apiConfigMonitor = apiConfigMonitor; - } - - public IDbConnection Get(string? name = null) - { - var connectionString = new SqliteConnectionStringBuilder() - { - DataSource = Path.Combine(_apiConfigMonitor.CurrentValue.DataDir, $"{name ?? "crupest-api"}.db"), - Mode = SqliteOpenMode.ReadWriteCreate - }.ToString(); - - var connection = new SqliteConnection(connectionString); - connection.Open(); - return connection; - } - - public bool ShouldDisposeConnection => true; -} - -public class SqliteMemoryConnectionFactory : IDbConnectionFactory, IDisposable -{ - private readonly Dictionary _connections = new(); - - public IDbConnection Get(string? name = null) - { - name = name ?? "crupest-api"; - - if (_connections.TryGetValue(name, out var connection)) - { - return connection; - } - else - { - var connectionString = new SqliteConnectionStringBuilder() - { - DataSource = ":memory:", - Mode = SqliteOpenMode.ReadWriteCreate - }.ToString(); - - connection = new SqliteConnection(connectionString); - _connections.Add(name, connection); - connection.Open(); - return connection; - } - } - - public bool ShouldDisposeConnection => false; - - - public void Dispose() - { - foreach (var connection in _connections.Values) - { - connection.Dispose(); - } - } -} -- cgit v1.2.3