Use Postgresql, add db run params, npgsql logging adapter and empty models

This commit is contained in:
runebaas 2018-05-10 00:00:51 +02:00
parent 3425896c0b
commit d2f31d0730
No known key found for this signature in database
GPG key ID: 2677AF508D0300D6
24 changed files with 252 additions and 39 deletions

View file

@ -0,0 +1,73 @@
using System;
using Geekbot.net.Lib.Logger;
using Npgsql.Logging;
using LogLevel = NLog.LogLevel;
namespace Geekbot.net.Database.LoggingAdapter
{
public class NpgsqlLoggingAdapter : NpgsqlLogger
{
private readonly string _name;
private readonly IGeekbotLogger _geekbotLogger;
public NpgsqlLoggingAdapter(string name, IGeekbotLogger geekbotLogger)
{
_name = name.Substring(7);
_geekbotLogger = geekbotLogger;
geekbotLogger.Trace(LogSource.Database, $"Loaded Npgsql logging adapter: {name}");
}
public override bool IsEnabled(NpgsqlLogLevel level)
{
return !_geekbotLogger.LogAsJson() && _geekbotLogger.GetNLogger().IsEnabled(ToGeekbotLogLevel(level));
}
public override void Log(NpgsqlLogLevel level, int connectorId, string msg, Exception exception = null)
{
var nameAndMessage = $"{_name}: {msg}";
switch (level)
{
case NpgsqlLogLevel.Trace:
_geekbotLogger.Trace(LogSource.Database, nameAndMessage);
break;
case NpgsqlLogLevel.Debug:
_geekbotLogger.Debug(LogSource.Database, nameAndMessage);
break;
case NpgsqlLogLevel.Info:
_geekbotLogger.Information(LogSource.Database, nameAndMessage);
break;
case NpgsqlLogLevel.Warn:
_geekbotLogger.Warning(LogSource.Database, nameAndMessage, exception);
break;
case NpgsqlLogLevel.Error:
case NpgsqlLogLevel.Fatal:
_geekbotLogger.Error(LogSource.Database, nameAndMessage, exception);
break;
default:
_geekbotLogger.Information(LogSource.Database, nameAndMessage);
break;
}
}
private static LogLevel ToGeekbotLogLevel(NpgsqlLogLevel level)
{
switch (level)
{
case NpgsqlLogLevel.Trace:
return LogLevel.Trace;
case NpgsqlLogLevel.Debug:
return LogLevel.Debug;
case NpgsqlLogLevel.Info:
return LogLevel.Info;
case NpgsqlLogLevel.Warn:
return LogLevel.Warn;
case NpgsqlLogLevel.Error:
return LogLevel.Error;
case NpgsqlLogLevel.Fatal:
return LogLevel.Fatal;
default:
throw new ArgumentOutOfRangeException(nameof(level));
}
}
}
}

View file

@ -0,0 +1,20 @@
using Geekbot.net.Lib.Logger;
using Npgsql.Logging;
namespace Geekbot.net.Database.LoggingAdapter
{
public class NpgsqlLoggingProviderAdapter : INpgsqlLoggingProvider
{
private readonly GeekbotLogger _geekbotLogger;
public NpgsqlLoggingProviderAdapter(GeekbotLogger geekbotLogger)
{
_geekbotLogger = geekbotLogger;
}
public NpgsqlLogger CreateLogger(string name)
{
return new NpgsqlLoggingAdapter(name, _geekbotLogger);
}
}
}