Files
admin/Azaion.Common/Database/DbFactory.cs
T
Alex Bezdieniezhnykh 121052a3ef Init commit
add security encryption and hashing: WIP
add endpoints: register user, get and save resources
add db main operations, User entity
2024-11-09 00:37:43 +02:00

49 lines
1.3 KiB
C#

using System.Diagnostics;
using LinqToDB;
namespace Azaion.Common.Database;
public interface IDbFactory
{
Task<T> Run<T>(Func<AzaionDb, Task<T>> func);
Task Run(Func<AzaionDb, Task> func);
T Run<T>(Func<AzaionDb, T> func);
}
public class DbFactory : IDbFactory
{
private readonly DataOptions _dataOptions;
public DbFactory(string connectionString, bool useTracing = true, bool msSql = false)
{
if (string.IsNullOrEmpty(connectionString))
throw new ArgumentException("Empty connectionString", nameof(connectionString));
_dataOptions = new DataOptions()
.UsePostgreSQL(connectionString)
.UseMappingSchema(AzaionDbSchemaHolder.MappingSchema);
if (useTracing)
_ = _dataOptions.UseTracing(TraceLevel.Info, t => Console.WriteLine(t.SqlText));
}
public async Task<T> Run<T>(Func<AzaionDb, Task<T>> func)
{
await using var db = new AzaionDb(_dataOptions);
return await func(db);
}
public async Task Run(Func<AzaionDb, Task> func)
{
await using var db = new AzaionDb(_dataOptions);
await func(db);
}
public T Run<T>(Func<AzaionDb, T> func)
{
using var db = new AzaionDb(_dataOptions);
return func(db);
}
}