aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs23
1 files changed, 23 insertions, 0 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
index 80d1b22..2ee01ca 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
@@ -1,4 +1,6 @@
using System.Data;
+using Microsoft.Data.Sqlite;
+using Microsoft.Extensions.Options;
namespace CrupestApi.Commons.Crud;
@@ -7,3 +9,24 @@ public interface IDbConnectionFactory
{
IDbConnection Get(string? name = null);
}
+
+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();
+
+ return new SqliteConnection(connectionString);
+ }
+}