geekbot/Geekbot.net/Database/DatabaseInitializer.cs

56 lines
1.8 KiB
C#
Raw Normal View History

2018-05-09 18:51:53 +02:00
using System;
using Geekbot.net.Database.LoggingAdapter;
2018-05-09 18:51:53 +02:00
using Geekbot.net.Lib;
using Geekbot.net.Lib.Logger;
using Npgsql.Logging;
2018-05-09 18:51:53 +02:00
namespace Geekbot.net.Database
{
public class DatabaseInitializer
{
private readonly RunParameters _runParameters;
private readonly GeekbotLogger _logger;
public DatabaseInitializer(RunParameters runParameters, GeekbotLogger logger)
{
_runParameters = runParameters;
_logger = logger;
NpgsqlLogManager.Provider = new NpgsqlLoggingProviderAdapter(logger, runParameters);
2018-05-09 18:51:53 +02:00
}
public DatabaseContext Initialize()
2018-05-09 18:51:53 +02:00
{
DatabaseContext database = null;
try
{
if (_runParameters.InMemory)
{
database = new InMemoryDatabase("geekbot");
}
else
{
database = new SqlDatabase(new SqlConnectionString
{
Host = _runParameters.DbHost,
Port = _runParameters.DbPort,
Database = _runParameters.DbDatabase,
Username = _runParameters.DbUser,
Password = _runParameters.DbPassword
});
2018-05-09 18:51:53 +02:00
}
}
catch (Exception e)
{
_logger.Error(LogSource.Geekbot, "Could not Connect to datbase", e);
Environment.Exit(GeekbotExitCode.DatabaseConnectionFailed.GetHashCode());
}
if (_runParameters.DbLogging)
{
_logger.Information(LogSource.Database, $"Connected with {database.Database.ProviderName}");
}
2018-05-09 18:51:53 +02:00
return database;
}
}
}