diff --git a/VizhTalk.Learning.Application/CommandHandlers/LanguageCommandHandler.cs b/VizhTalk.Learning.Application/CommandHandlers/LanguageCommandHandler.cs index 436ffe3..7bd78ed 100644 --- a/VizhTalk.Learning.Application/CommandHandlers/LanguageCommandHandler.cs +++ b/VizhTalk.Learning.Application/CommandHandlers/LanguageCommandHandler.cs @@ -16,7 +16,7 @@ public class CreateLanguageCommandHandler(IUnitOfWork unitOfWork) : ICommandHand public async Task Handle(CreateLanguageCommand request, CancellationToken cancellationToken) { var title = request.Title.Trim(); - if (await unitOfWork.Language.Exists(x => x.Title.Equals(title))) + if (await unitOfWork.Language.Exists(x => x.Title == title)) throw new LanguageTitleAlreadyExistsException(); var language = Language.CreateNew(new LanguageTitle(title)); diff --git a/VizhTalk.Learning.Application/QueryHandlers/LanguageQueryHandler.cs b/VizhTalk.Learning.Application/QueryHandlers/LanguageQueryHandler.cs index a200f4a..2ba0e4a 100644 --- a/VizhTalk.Learning.Application/QueryHandlers/LanguageQueryHandler.cs +++ b/VizhTalk.Learning.Application/QueryHandlers/LanguageQueryHandler.cs @@ -1,6 +1,7 @@ using VizhTalk.BuildingBlocks.Application.Configuration.Query; using VizhTalk.BuildingBlocks.Application.Data; using VizhTalk.Grpc.Learning.Language; +using VizhTalk.Learning.Domain.Entities; namespace VizhTalk.Learning.Application.QueryHandlers; @@ -19,8 +20,10 @@ public class GetLanguageByTitleQueryHandler(IGenericDapper language { public async Task Handle(GetLanguageByTitleQuery request, CancellationToken cancellationToken) { - var sql = "select * from Learning.Languages where Title = @title"; - var language = await languageDapper.GetAsync(sql, request.Title); + var sql = $"select * from Learning.Languages where Title = " + + $" @{nameof(Language.Title)}"; + + var language = await languageDapper.GetAsync(sql, new { request.Title }); return language; } } diff --git a/VizhTalk.Learning.Domain/ValueObjects/LanguageTitle.cs b/VizhTalk.Learning.Domain/ValueObjects/LanguageTitle.cs index 8e11faf..9df5b89 100644 --- a/VizhTalk.Learning.Domain/ValueObjects/LanguageTitle.cs +++ b/VizhTalk.Learning.Domain/ValueObjects/LanguageTitle.cs @@ -11,18 +11,16 @@ namespace VizhTalk.Learning.Domain.ValueObjects } public LanguageTitle(string title) { + title = title.Trim(); Guard.NullOrEmpty(title, nameof(LanguageTitle)); Guard.MaxLength(title, nameof(LanguageTitle), 60); Value = title; } public string Value { get; private set; } - public override bool Equals(object? obj) - { - if (obj is string value) - return Value == value; - return base.Equals(obj); - } + + public static implicit operator string(LanguageTitle title) => title.Value; + } } diff --git a/VizhTalk.Learning.Infrastructure/Dapper/GenericDapper.cs b/VizhTalk.Learning.Infrastructure/Dapper/GenericDapper.cs index 7a41db5..209704f 100644 --- a/VizhTalk.Learning.Infrastructure/Dapper/GenericDapper.cs +++ b/VizhTalk.Learning.Infrastructure/Dapper/GenericDapper.cs @@ -12,7 +12,7 @@ public class GenericDapper : IGenericDapper { connection = sqlConnectionFactory.GetOpenConnection(); } - public async Task GetAsync(string sql, object? param = null) + public async Task GetAsync(string sql, object? param = null) { return await connection.QueryFirstOrDefaultAsync(sql, param); }