aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2024-12-19 21:42:01 +0800
commita7fb0508867ee53934be18a6606aa8bc12c2645b (patch)
tree5994f0a62733b13f9f330e3515260ae20dc4a0bd /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
parent7692763f83ad1be735b0b9e9ab0af8ce666d8de8 (diff)
downloadcrupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.gz
crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.tar.bz2
crupest-a7fb0508867ee53934be18a6606aa8bc12c2645b.zip
HALF WORK: 2024.12.19
Re-organize file structure.
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs75
1 files changed, 0 insertions, 75 deletions
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<CrupestApiConfig> _apiConfigMonitor;
-
- public SqliteConnectionFactory(IOptionsMonitor<CrupestApiConfig> 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<string, IDbConnection> _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();
- }
- }
-}