Add Logger; AcUserDal fix; AcUserDalTests improvements, etc...

This commit is contained in:
jozsef.b@aycode.com 2023-12-12 08:16:22 +01:00
parent 715ac0fa5b
commit 3b941e9c71
7 changed files with 102 additions and 22 deletions

View File

@ -10,8 +10,4 @@
<ProjectReference Include="..\AyCode.Utils\AyCode.Utils.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Enums\" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,14 @@
namespace AyCode.Core.Enums
{
public enum AppType : byte
{
None = 0,
Server = 1,
Relay = 5,
Game = 10,
Web = 15,
Mobile = 20,
Dissonance = 25,
UnitTest = 255,
}
}

View File

@ -0,0 +1,17 @@
namespace AyCode.Core.Logger
{
/// <summary>
/// Az adatbásisban van egy LogLevel tábla, ha változtatunk az enum-ok értékén, akkor ott is igazítsuk hozzá!
/// </summary>
public enum LogLevel : byte
{
Detail = 0,
Trace = 5,
Debug = 10,
Info = 15,
Suggest = 17,
Warning = 20,
Error = 25,
Disabled = 255,
}
}

View File

@ -1,32 +1,85 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using AyCode.Core.Consts;
using AyCode.Core.Enums;
namespace AyCode.Core.Logger
{
public static class Logger
{
public static void Info(string text)
public static LogLevel LogLevel { get; set; } = LogLevel.Detail;
public static AppType AppType { get; set; } = AppType.Server;
public static void Detail(string text, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Detail, GetDiagnosticText(LogLevel.Detail, text, memberName, null));
public static void Debug(string text, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Debug, GetDiagnosticText(LogLevel.Debug, text, memberName, null));
public static void Info(string text, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Info, GetDiagnosticText(LogLevel.Info, text, memberName, null));
public static void Warning(string text, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Warning, GetDiagnosticText(LogLevel.Warning, text, memberName, null));
public static void Suggest(string text, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Suggest, GetDiagnosticText(LogLevel.Suggest, text, memberName, null));
public static void Error(string text, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Error, GetDiagnosticText(LogLevel.Error, text, memberName, null));
public static void Error(string text, Exception ex, [CallerMemberName] string? memberName = null)
=> WriteToConsole(LogLevel.Error, GetDiagnosticText(LogLevel.Error, text, memberName, ex));
private static void WriteToConsole(LogLevel logLevel, string text)
{
Console.WriteLine(text);
if (logLevel < LogLevel) return;
//lock (ForWriterLock)
{
//if (logLevel > LogLevel.Trace && logLevel < LogLevel.Suggest)
{
Console.WriteLine(text);
return;
}
if (logLevel <= LogLevel.Trace)
{
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(text);
}
else if (logLevel == LogLevel.Suggest)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(text);
}
else
{
Console.ForegroundColor = logLevel == LogLevel.Warning ? ConsoleColor.Yellow : ConsoleColor.Red;
Console.WriteLine($"{AcEnv.NL}{text}{AcEnv.NL}");
}
Console.ForegroundColor = ConsoleColor.White;
}
}
public static void Warning(string text)
private static string GetDiagnosticText(LogLevel logLevel, string logText, string? callerName, Exception? ex)
{
Console.WriteLine(text);
var threadId = Environment.CurrentManagedThreadId;
return $"[{DateTime.Now:HH:mm:ss.fff}] [{AppType.ToString()[0]}] {"[" + logLevel + "]",-9} {"[...->" + callerName + "]",-54} {"[" + threadId + "]",5} {logText}{ErrorText(ex)}";
}
public static void Error(string text)
private static string ErrorText(Exception? ex)
{
Console.WriteLine(text);
}
if (ex == null) return string.Empty;
public static void Error(string text, Exception ex)
{
Console.WriteLine($"{text}{AcEnv.NL}{ex.Message}{AcEnv.NL}{ex}");
var errorType = ex.GetType().Name;
return string.IsNullOrWhiteSpace(errorType) ? string.Empty : $"{Environment.NewLine}[{errorType.ToUpper()}]: {ex}";
}
}
}

View File

@ -14,7 +14,7 @@ namespace AyCode.Database.Tests.Users
{
[TestMethod]
[DataRow("540271F6-C604-4C16-8160-D5A7CAFEDF00")]
public void GetUserById_ReturnsUser_WhenUserExists(string userIdString)
public virtual void GetUserById_ReturnsUser_WhenUserExists(string userIdString)
{
var userId = Guid.Parse(userIdString);
var user = Dal.GetUserById(userId);
@ -25,7 +25,7 @@ namespace AyCode.Database.Tests.Users
[TestMethod]
[DataRow("test@tiam.hu")]
public void GetUserByEmail_ReturnsUser_WhenUserExists(string email)
public virtual void GetUserByEmail_ReturnsUser_WhenUserExists(string email)
{
var user = Dal.GetUserByEmail(email);
@ -35,7 +35,7 @@ namespace AyCode.Database.Tests.Users
[TestMethod]
[DataRow("test@tiam.hu")]
public async Task GetUserByEmailAsync_ReturnsUser_WhenUserExists(string email)
public virtual async Task GetUserByEmailAsync_ReturnsUser_WhenUserExists(string email)
{
TUser? user = null;

View File

@ -14,14 +14,11 @@ using AyCode.Database.DbSets.Users;
namespace AyCode.Database.DataLayers.Users
{
public abstract class AcUserDalBase<TDbContext, TUser, TUserToken> : AcDalBase<TDbContext>, IAcUserDbContextBase<TUser, TUserToken>
public abstract class AcUserDalBase<TDbContext, TUser, TUserToken> : AcDalBase<TDbContext>
where TDbContext : AcDbContextBase, IAcUserDbContextBase<TUser, TUserToken>
where TUser : class, IUserBase
where TUserToken : class, IUserTokenBase
{
public DbSet<TUser> Users { get; set; }
public DbSet<TUserToken> UserTokens { get; set; }
public TUser? GetUserById(Guid userId) => Session(x => x.GetUserById(userId));
public Task<TUser?> GetUserByIdAsync(Guid userId) => SessionAsync(x => x.GetUserById(userId));

View File

@ -1,4 +1,5 @@
using AyCode.Interfaces.Users;
using AyCode.Core.Logger;
using AyCode.Interfaces.Users;
namespace AyCode.Database.DbSets.Users;
@ -11,6 +12,8 @@ public static class AcUserDbSetExtensions
public static TUser? GetUserByEmail<TUser>(this IAcUserDbSet<TUser> ctx, string email) where TUser : class, IUserBase
{
Logger.Info($"GetUserByEmail: {email}");
var emailLower = email.ToLower();
return ctx.Users.FirstOrDefault(u => u.EmailAddress == emailLower);
}