Use Postgresql, add db run params, npgsql logging adapter and empty models
This commit is contained in:
parent
3425896c0b
commit
d2f31d0730
24 changed files with 252 additions and 39 deletions
|
@ -1,15 +1,17 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Geekbot.net.Database.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Geekbot.net.Database
|
||||
{
|
||||
public class DatabaseContext : DbContext
|
||||
{
|
||||
public DbSet<QuoteModel> Quotes { get; set; }
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
=> optionsBuilder.UseLoggerFactory(new LoggerFactory().AddConsole())
|
||||
// .UseInMemoryDatabase(databaseName: "Geekbot");
|
||||
.UseMySql(@"Server=localhost;database=geekbot;uid=geekbot;");
|
||||
// public DbSet<UserModel> Users { get; set; }
|
||||
// public DbSet<GuildsModel> Guilds { get; set; }
|
||||
// public DbSet<GuildSettingsModel> GuildSettings { get; set; }
|
||||
// public DbSet<KarmaModel> Karma { get; set; }
|
||||
// public DbSet<ShipsModel> Ships { get; set; }
|
||||
// public DbSet<RoleSelfServiceModel> RoleSelfService { get; set; }
|
||||
// public DbSet<SlapsModel> SlapsModels { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
using System;
|
||||
using Geekbot.net.Database.LoggingAdapter;
|
||||
using Geekbot.net.Lib;
|
||||
using Geekbot.net.Lib.Logger;
|
||||
using Npgsql.Logging;
|
||||
|
||||
namespace Geekbot.net.Database
|
||||
{
|
||||
|
@ -26,9 +28,16 @@ namespace Geekbot.net.Database
|
|||
}
|
||||
else
|
||||
{
|
||||
database = new SqlDatabase(new SqlConnectionString());
|
||||
NpgsqlLogManager.Provider = new NpgsqlLoggingProviderAdapter(_logger);
|
||||
database = new SqlDatabase(new SqlConnectionString
|
||||
{
|
||||
Host = _runParameters.DbHost,
|
||||
Port = _runParameters.DbPort,
|
||||
Database = _runParameters.DbDatabase,
|
||||
Username = _runParameters.DbUser,
|
||||
Password = _runParameters.DbPassword
|
||||
});
|
||||
}
|
||||
|
||||
database.Database.EnsureCreated();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -36,7 +45,8 @@ namespace Geekbot.net.Database
|
|||
_logger.Error(LogSource.Geekbot, "Could not Connect to datbase", e);
|
||||
Environment.Exit(GeekbotExitCode.DatabaseConnectionFailed.GetHashCode());
|
||||
}
|
||||
|
||||
|
||||
_logger.Information(LogSource.Database, $"Connected with {database.Database.ProviderName}");
|
||||
return database;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ namespace Geekbot.net.Database
|
|||
}
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
=> optionsBuilder.UseLoggerFactory(new LoggerFactory().AddConsole())
|
||||
.UseInMemoryDatabase(databaseName: _name);
|
||||
=> optionsBuilder.UseInMemoryDatabase(databaseName: _name);
|
||||
}
|
||||
}
|
73
Geekbot.net/Database/LoggingAdapter/NpgsqlLoggingAdapter.cs
Normal file
73
Geekbot.net/Database/LoggingAdapter/NpgsqlLoggingAdapter.cs
Normal 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
7
Geekbot.net/Database/Models/GuildSettingsModel.cs
Normal file
7
Geekbot.net/Database/Models/GuildSettingsModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class GuildSettingsModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
7
Geekbot.net/Database/Models/GuildsModel.cs
Normal file
7
Geekbot.net/Database/Models/GuildsModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class GuildsModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
7
Geekbot.net/Database/Models/KarmaModel.cs
Normal file
7
Geekbot.net/Database/Models/KarmaModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class KarmaModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -1,8 +1,7 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Microsoft.EntityFrameworkCore.Scaffolding.Metadata;
|
||||
|
||||
namespace Geekbot.net.Database
|
||||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class QuoteModel
|
||||
{
|
||||
|
@ -13,10 +12,10 @@ namespace Geekbot.net.Database
|
|||
public int InternalId { get; set; }
|
||||
|
||||
[Required]
|
||||
public ulong GuildId { get; set; }
|
||||
public long GuildId { get; set; }
|
||||
|
||||
[Required]
|
||||
public ulong UserId { get; set; }
|
||||
public long UserId { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.DateTime)]
|
7
Geekbot.net/Database/Models/RoleSelfServiceModel.cs
Normal file
7
Geekbot.net/Database/Models/RoleSelfServiceModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class RoleSelfServiceModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
7
Geekbot.net/Database/Models/ShipsModel.cs
Normal file
7
Geekbot.net/Database/Models/ShipsModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class ShipsModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
7
Geekbot.net/Database/Models/SlapsModel.cs
Normal file
7
Geekbot.net/Database/Models/SlapsModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class SlapsModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
7
Geekbot.net/Database/Models/UserModel.cs
Normal file
7
Geekbot.net/Database/Models/UserModel.cs
Normal file
|
@ -0,0 +1,7 @@
|
|||
namespace Geekbot.net.Database.Models
|
||||
{
|
||||
public class UserModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -2,15 +2,15 @@
|
|||
{
|
||||
public class SqlConnectionString
|
||||
{
|
||||
public string Server { get; set; } = "localhost";
|
||||
public string Port { get; set; } = "3306";
|
||||
public string Database { get; set; } = "geekbot";
|
||||
public string Username { get; set; } = "geekbot";
|
||||
public string Password { get; set; } = "";
|
||||
public string Host { get; set; }
|
||||
public string Port { get; set; }
|
||||
public string Database { get; set; }
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Server={Server};Port={Port};Database={Database};Uid={Username};Pwd={Password};";
|
||||
return $"Server={Host};Port={Port};Database={Database};Uid={Username};Pwd={Password};";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,4 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Geekbot.net.Database
|
||||
{
|
||||
|
@ -13,7 +12,6 @@ namespace Geekbot.net.Database
|
|||
}
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
=> optionsBuilder.UseLoggerFactory(new LoggerFactory().AddConsole())
|
||||
.UseMySql(_connectionString.ToString());
|
||||
=> optionsBuilder.UseNpgsql(_connectionString.ToString());
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue