aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/DbConnectionFactory.cs
blob: e8f8abf676a925115ea5f9b7ed998df799f02b70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Data;
using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Options;

namespace CrupestApi.Commons.Crud;

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);
    }
}