TigerEmu/Storage/NhSessionFactory.cs

39 lines
1.4 KiB
C#
Raw Normal View History

2023-09-23 12:20:45 +00:00
using System.Reflection;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
2023-09-23 11:11:07 +00:00
using Microsoft.Extensions.Configuration;
using MySqlConnector;
2023-09-23 12:20:45 +00:00
using NHibernate;
using NHibernate.Driver.MySqlConnector;
2023-09-23 11:11:07 +00:00
namespace Tiger.Storage;
2023-09-23 12:20:45 +00:00
public class NhSessionFactory : INhSessionFactory
2023-09-23 11:11:07 +00:00
{
2023-09-23 12:20:45 +00:00
private readonly ISessionFactory _sessionFactory;
public NhSessionFactory(IConfiguration configuration)
2023-09-23 11:11:07 +00:00
{
var stringBuilder = new MySqlConnectionStringBuilder
{
Server = configuration["Database:Host"],
Port = uint.Parse(configuration["Database:Port"] ?? "3306"),
UserID = configuration["Database:Username"],
Password = configuration["Database:Password"],
Database = configuration["Database:Database"],
Pooling = true,
MinimumPoolSize = uint.Parse(configuration["Database:MinPool"] ?? "5"),
MaximumPoolSize = uint.Parse(configuration["Database:MaxPool"] ?? "15")
};
2023-09-23 12:20:45 +00:00
_sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(stringBuilder.ToString()).Driver<MySqlConnectorDriver>())
2023-09-23 12:20:45 +00:00
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.BuildSessionFactory();
2023-09-23 11:11:07 +00:00
}
2023-09-23 12:20:45 +00:00
public ISession OpenSession()
2023-09-23 11:11:07 +00:00
{
2023-09-23 12:20:45 +00:00
return _sessionFactory.OpenSession();
2023-09-23 11:11:07 +00:00
}
}