Skip to content

Commit 7bf832a

Browse files
authored
refactor: Enhancements to Query Management and Consistency in SQL Queries (#297)
* Rewrite queries to use raw strings * Refactor additional queries * Update readme
1 parent f04bd59 commit 7bf832a

File tree

59 files changed

+691
-533
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+691
-533
lines changed

README.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -457,13 +457,15 @@ internal class GetAllMeetingGroupsQueryHandler : IQueryHandler<GetAllMeetingGrou
457457
{
458458
var connection = _sqlConnectionFactory.GetOpenConnection();
459459

460-
const string sql = "SELECT " +
461-
"[MeetingGroup].[Id], " +
462-
"[MeetingGroup].[Name], " +
463-
"[MeetingGroup].[Description], " +
464-
"[MeetingGroup].[LocationCountryCode], " +
465-
"[MeetingGroup].[LocationCity]" +
466-
"FROM [meetings].[v_MeetingGroups] AS [MeetingGroup]";
460+
const string sql = $"""
461+
SELECT
462+
[MeetingGroup].[Id] as [{nameof(MeetingGroupDto.Id)}] ,
463+
[MeetingGroup].[Name] as [{nameof(MeetingGroupDto.Name)}],
464+
[MeetingGroup].[Description] as [{nameof(MeetingGroupDto.Description)}]
465+
[MeetingGroup].[LocationCountryCode] as [{nameof(MeetingGroupDto.LocationCountryCode)}],
466+
[MeetingGroup].[LocationCity] as [{nameof(MeetingGroupDto.LocationCity)}]
467+
FROM [meetings].[v_MeetingGroups] AS [MeetingGroup]
468+
""";
467469
var meetingGroups = await connection.QueryAsync<MeetingGroupDto>(sql);
468470

469471
return meetingGroups.AsList();

src/Modules/Administration/Application/MeetingGroupProposals/GetMeetingGroupProposal/GetMeetingGroupProposalQueryHandler.cs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,23 @@ public async Task<MeetingGroupProposalDto> Handle(GetMeetingGroupProposalQuery q
1717
{
1818
var connection = _sqlConnectionFactory.GetOpenConnection();
1919

20-
string sql = "SELECT " +
21-
$"[MeetingGroupProposal].[Id] AS [{nameof(MeetingGroupProposalDto.Id)}], " +
22-
$"[MeetingGroupProposal].[Name] AS [{nameof(MeetingGroupProposalDto.Name)}], " +
23-
$"[MeetingGroupProposal].[ProposalUserId] AS [{nameof(MeetingGroupProposalDto.ProposalUserId)}], " +
24-
$"[MeetingGroupProposal].[LocationCity] AS [{nameof(MeetingGroupProposalDto.LocationCity)}], " +
25-
$"[MeetingGroupProposal].[LocationCountryCode] AS [{nameof(MeetingGroupProposalDto.LocationCountryCode)}], " +
26-
$"[MeetingGroupProposal].[Description] AS [{nameof(MeetingGroupProposalDto.Description)}], " +
27-
$"[MeetingGroupProposal].[ProposalDate] AS [{nameof(MeetingGroupProposalDto.ProposalDate)}], " +
28-
$"[MeetingGroupProposal].[StatusCode] AS [{nameof(MeetingGroupProposalDto.StatusCode)}], " +
29-
$"[MeetingGroupProposal].[DecisionDate] AS [{nameof(MeetingGroupProposalDto.DecisionDate)}], " +
30-
$"[MeetingGroupProposal].[DecisionUserId] AS [{nameof(MeetingGroupProposalDto.DecisionUserId)}], " +
31-
$"[MeetingGroupProposal].[DecisionCode] AS [{nameof(MeetingGroupProposalDto.DecisionCode)}], " +
32-
$"[MeetingGroupProposal].[DecisionRejectReason] AS [{nameof(MeetingGroupProposalDto.DecisionRejectReason)}] " +
33-
"FROM [administration].[v_MeetingGroupProposals] AS [MeetingGroupProposal] " +
34-
"WHERE [MeetingGroupProposal].[Id] = @MeetingGroupProposalId";
20+
const string sql = $"""
21+
SELECT
22+
[MeetingGroupProposal].[Id] AS [{nameof(MeetingGroupProposalDto.Id)}],
23+
[MeetingGroupProposal].[Name] AS [{nameof(MeetingGroupProposalDto.Name)}],
24+
[MeetingGroupProposal].[ProposalUserId] AS [{nameof(MeetingGroupProposalDto.ProposalUserId)}],
25+
[MeetingGroupProposal].[LocationCity] AS [{nameof(MeetingGroupProposalDto.LocationCity)}],
26+
[MeetingGroupProposal].[LocationCountryCode] AS [{nameof(MeetingGroupProposalDto.LocationCountryCode)}],
27+
[MeetingGroupProposal].[Description] AS [{nameof(MeetingGroupProposalDto.Description)}],
28+
[MeetingGroupProposal].[ProposalDate] AS [{nameof(MeetingGroupProposalDto.ProposalDate)}],
29+
[MeetingGroupProposal].[StatusCode] AS [{nameof(MeetingGroupProposalDto.StatusCode)}],
30+
[MeetingGroupProposal].[DecisionDate] AS [{nameof(MeetingGroupProposalDto.DecisionDate)}],
31+
[MeetingGroupProposal].[DecisionUserId] AS [{nameof(MeetingGroupProposalDto.DecisionUserId)}],
32+
[MeetingGroupProposal].[DecisionCode] AS [{nameof(MeetingGroupProposalDto.DecisionCode)}],
33+
[MeetingGroupProposal].[DecisionRejectReason] AS [{nameof(MeetingGroupProposalDto.DecisionRejectReason)}]
34+
FROM [administration].[v_MeetingGroupProposals] AS [MeetingGroupProposal]
35+
WHERE [MeetingGroupProposal].[Id] = @MeetingGroupProposalId
36+
""";
3537

3638
return await connection.QuerySingleAsync<MeetingGroupProposalDto>(sql, new { query.MeetingGroupProposalId });
3739
}

src/Modules/Administration/Application/MeetingGroupProposals/GetMeetingGroupProposals/GetMeetingGroupProposalsQueryHandler.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,22 @@ public async Task<List<MeetingGroupProposalDto>> Handle(GetMeetingGroupProposals
1818
{
1919
var connection = _sqlConnectionFactory.GetOpenConnection();
2020

21-
string sql = "SELECT " +
22-
$"[MeetingGroupProposal].[Id] AS [{nameof(MeetingGroupProposalDto.Id)}], " +
23-
$"[MeetingGroupProposal].[Name] AS [{nameof(MeetingGroupProposalDto.Name)}], " +
24-
$"[MeetingGroupProposal].[ProposalUserId] AS [{nameof(MeetingGroupProposalDto.ProposalUserId)}], " +
25-
$"[MeetingGroupProposal].[LocationCity] AS [{nameof(MeetingGroupProposalDto.LocationCity)}], " +
26-
$"[MeetingGroupProposal].[LocationCountryCode] AS [{nameof(MeetingGroupProposalDto.LocationCountryCode)}], " +
27-
$"[MeetingGroupProposal].[Description] AS [{nameof(MeetingGroupProposalDto.Description)}], " +
28-
$"[MeetingGroupProposal].[ProposalDate] AS [{nameof(MeetingGroupProposalDto.ProposalDate)}], " +
29-
$"[MeetingGroupProposal].[StatusCode] AS [{nameof(MeetingGroupProposalDto.StatusCode)}], " +
30-
$"[MeetingGroupProposal].[DecisionDate] AS [{nameof(MeetingGroupProposalDto.DecisionDate)}], " +
31-
$"[MeetingGroupProposal].[DecisionUserId] AS [{nameof(MeetingGroupProposalDto.DecisionUserId)}], " +
32-
$"[MeetingGroupProposal].[DecisionCode] AS [{nameof(MeetingGroupProposalDto.DecisionCode)}], " +
33-
$"[MeetingGroupProposal].[DecisionRejectReason] AS [{nameof(MeetingGroupProposalDto.DecisionRejectReason)}] " +
34-
"FROM [administration].[v_MeetingGroupProposals] AS [MeetingGroupProposal] ";
21+
const string sql = $"""
22+
SELECT
23+
[MeetingGroupProposal].[Id] AS [{nameof(MeetingGroupProposalDto.Id)}],
24+
[MeetingGroupProposal].[Name] AS [{nameof(MeetingGroupProposalDto.Name)}],
25+
[MeetingGroupProposal].[ProposalUserId] AS [{nameof(MeetingGroupProposalDto.ProposalUserId)}],
26+
[MeetingGroupProposal].[LocationCity] AS [{nameof(MeetingGroupProposalDto.LocationCity)}],
27+
[MeetingGroupProposal].[LocationCountryCode] AS [{nameof(MeetingGroupProposalDto.LocationCountryCode)}],
28+
[MeetingGroupProposal].[Description] AS [{nameof(MeetingGroupProposalDto.Description)}],
29+
[MeetingGroupProposal].[ProposalDate] AS [{nameof(MeetingGroupProposalDto.ProposalDate)}],
30+
[MeetingGroupProposal].[StatusCode] AS [{nameof(MeetingGroupProposalDto.StatusCode)}],
31+
[MeetingGroupProposal].[DecisionDate] AS [{nameof(MeetingGroupProposalDto.DecisionDate)}],
32+
[MeetingGroupProposal].[DecisionUserId] AS [{nameof(MeetingGroupProposalDto.DecisionUserId)}],
33+
[MeetingGroupProposal].[DecisionCode] AS [{nameof(MeetingGroupProposalDto.DecisionCode)}],
34+
[MeetingGroupProposal].[DecisionRejectReason] AS [{nameof(MeetingGroupProposalDto.DecisionRejectReason)}]
35+
FROM [administration].[v_MeetingGroupProposals] AS [MeetingGroupProposal]
36+
""";
3537

3638
return (await connection.QueryAsync<MeetingGroupProposalDto>(sql)).AsList();
3739
}

src/Modules/Administration/Application/Members/GetMember/GetMemberQueryHandler.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,17 @@ public GetMemberQueryHandler(ISqlConnectionFactory sqlConnectionFactory)
1616
public async Task<MemberDto> Handle(GetMemberQuery query, CancellationToken cancellationToken)
1717
{
1818
var connection = _sqlConnectionFactory.GetOpenConnection();
19-
20-
var sql = "SELECT " +
21-
$"[Member].[Id] AS [{nameof(MemberDto.Id)}], " +
22-
$"[Member].[Login] AS [{nameof(MemberDto.Login)}], " +
23-
$"[Member].[Email] AS [{nameof(MemberDto.Email)}], " +
24-
$"[Member].[FirstName] AS [{nameof(MemberDto.FirstName)}], " +
25-
$"[Member].[LastName] AS [{nameof(MemberDto.LastName)}], " +
26-
$"[Member].[Name] AS [{nameof(MemberDto.Name)}] " +
27-
"FROM [administration].[v_Members] AS [Member] " +
28-
"WHERE [Member].[Id] = @MemberId";
19+
const string sql = $"""
20+
SELECT
21+
[Member].[Id] AS [{nameof(MemberDto.Id)}],
22+
[Member].[Login] AS [{nameof(MemberDto.Login)}],
23+
[Member].[Email] AS [{nameof(MemberDto.Email)}],
24+
[Member].[FirstName] AS [{nameof(MemberDto.FirstName)}],
25+
[Member].[LastName] AS [{nameof(MemberDto.LastName)}],
26+
[Member].[Name] AS [{nameof(MemberDto.Name)}]
27+
FROM [administration].[v_Members] AS [Member]
28+
WHERE [Member].[Id] = @MemberId
29+
""";
2930

3031
return await connection.QuerySingleAsync<MemberDto>(sql, new { query.MemberId });
3132
}

src/Modules/Administration/Infrastructure/Configuration/Processing/Inbox/ProcessInboxCommandHandler.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,23 @@ public ProcessInboxCommandHandler(IMediator mediator, ISqlConnectionFactory sqlC
2020
public async Task Handle(ProcessInboxCommand command, CancellationToken cancellationToken)
2121
{
2222
var connection = this._sqlConnectionFactory.GetOpenConnection();
23-
string sql = "SELECT " +
24-
$"[InboxMessage].[Id] AS [{nameof(InboxMessageDto.Id)}], " +
25-
$"[InboxMessage].[Type] AS [{nameof(InboxMessageDto.Type)}], " +
26-
$"[InboxMessage].[Data] AS [{nameof(InboxMessageDto.Data)}] " +
27-
"FROM [administration].[InboxMessages] AS [InboxMessage] " +
28-
"WHERE [InboxMessage].[ProcessedDate] IS NULL " +
29-
"ORDER BY [InboxMessage].[OccurredOn]";
23+
const string sql = $"""
24+
SELECT
25+
[InboxMessage].[Id] AS [{nameof(InboxMessageDto.Id)}],
26+
[InboxMessage].[Type] AS [{nameof(InboxMessageDto.Type)}],
27+
[InboxMessage].[Data] AS [{nameof(InboxMessageDto.Data)}]
28+
FROM [administration].[InboxMessages] AS [InboxMessage]
29+
WHERE [InboxMessage].[ProcessedDate] IS NULL
30+
ORDER BY [InboxMessage].[OccurredOn]
31+
""";
3032

3133
var messages = await connection.QueryAsync<InboxMessageDto>(sql);
3234

33-
const string sqlUpdateProcessedDate = "UPDATE [administration].[InboxMessages] " +
34-
"SET [ProcessedDate] = @Date " +
35-
"WHERE [Id] = @Id";
35+
const string sqlUpdateProcessedDate = """
36+
UPDATE [administration].[InboxMessages]
37+
SET [ProcessedDate] = @Date
38+
WHERE [Id] = @Id
39+
""";
3640

3741
foreach (var message in messages)
3842
{

src/Modules/Administration/Infrastructure/Configuration/Processing/InternalCommands/ProcessInternalCommandsCommandHandler.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ public async Task Handle(ProcessInternalCommandsCommand command, CancellationTok
2525
{
2626
var connection = this._sqlConnectionFactory.GetOpenConnection();
2727

28-
string sql = "SELECT " +
29-
$"[Command].[Id] AS [{nameof(InternalCommandDto.Id)}], " +
30-
$"[Command].[Type] AS [{nameof(InternalCommandDto.Type)}], " +
31-
$"[Command].[Data] AS [{nameof(InternalCommandDto.Data)}] " +
32-
"FROM [administration].[InternalCommands] AS [Command] " +
33-
"WHERE [Command].[ProcessedDate] IS NULL " +
34-
"ORDER BY [Command].[EnqueueDate]";
28+
const string sql = $"""
29+
SELECT
30+
[Command].[Id] AS [{nameof(InternalCommandDto.Id)}],
31+
[Command].[Type] AS [{nameof(InternalCommandDto.Type)}],
32+
[Command].[Data] AS [{nameof(InternalCommandDto.Data)}]
33+
FROM [administration].[InternalCommands] AS [Command]
34+
WHERE [Command].[ProcessedDate] IS NULL
35+
ORDER BY [Command].[EnqueueDate]
36+
""";
3537

3638
var commands = await connection.QueryAsync<InternalCommandDto>(sql);
3739

src/Modules/Administration/Infrastructure/Configuration/Processing/Outbox/ProcessOutboxCommandHandler.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@ public ProcessOutboxCommandHandler(
3232
public async Task Handle(ProcessOutboxCommand command, CancellationToken cancellationToken)
3333
{
3434
var connection = this._sqlConnectionFactory.GetOpenConnection();
35-
string sql = "SELECT " +
36-
$"[OutboxMessage].[Id] AS [{nameof(OutboxMessageDto.Id)}], " +
37-
$"[OutboxMessage].[Type] AS [{nameof(OutboxMessageDto.Type)}], " +
38-
$"[OutboxMessage].[Data] AS [{nameof(OutboxMessageDto.Data)}] " +
39-
"FROM [administration].[OutboxMessages] AS [OutboxMessage] " +
40-
"WHERE [OutboxMessage].[ProcessedDate] IS NULL " +
41-
"ORDER BY [OutboxMessage].[OccurredOn]";
35+
const string sql = $"""
36+
SELECT
37+
[OutboxMessage].[Id] AS [{nameof(OutboxMessageDto.Id)}],
38+
[OutboxMessage].[Type] AS [{nameof(OutboxMessageDto.Type)}],
39+
[OutboxMessage].[Data] AS [{nameof(OutboxMessageDto.Data)}]
40+
FROM [administration].[OutboxMessages] AS [OutboxMessage]
41+
WHERE [OutboxMessage].[ProcessedDate] IS NULL
42+
ORDER BY [OutboxMessage].[OccurredOn]
43+
""";
4244

4345
var messages = await connection.QueryAsync<OutboxMessageDto>(sql);
4446
var messagesList = messages.AsList();

src/Modules/Administration/Tests/IntegrationTests/SeedWork/OutboxMessagesHelper.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ public class OutboxMessagesHelper
1212
{
1313
public static async Task<List<OutboxMessageDto>> GetOutboxMessages(IDbConnection connection)
1414
{
15-
const string sql = "SELECT " +
16-
"[OutboxMessage].[Id], " +
17-
"[OutboxMessage].[Type], " +
18-
"[OutboxMessage].[Data] " +
19-
"FROM [administration].[OutboxMessages] AS [OutboxMessage] " +
20-
"ORDER BY [OutboxMessage].[OccurredOn]";
15+
const string sql = """
16+
SELECT
17+
[OutboxMessage].[Id],
18+
[OutboxMessage].[Type],
19+
[OutboxMessage].[Data]
20+
FROM [administration].[OutboxMessages] AS [OutboxMessage]
21+
ORDER BY [OutboxMessage].[OccurredOn]
22+
""";
2123

2224
var messages = await connection.QueryAsync<OutboxMessageDto>(sql);
2325
return messages.AsList();

src/Modules/Meetings/Application/Countries/GetAllCountriesQueryHandler.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@ public async Task<List<CountryDto>> Handle(GetAllCountriesQuery query, Cancellat
1717
{
1818
var connection = _sqlConnectionFactory.GetOpenConnection();
1919

20-
return (await connection.QueryAsync<CountryDto>(
21-
"SELECT " +
22-
$"[Country].[Code] AS [{nameof(CountryDto.Code)}], " +
23-
$"[Country].[Name] AS [{nameof(CountryDto.Name)}] " +
24-
"FROM [meetings].[v_Countries] AS [Country]")).AsList();
20+
const string sql = $"""
21+
SELECT
22+
[Country].[Code] AS [{nameof(CountryDto.Code)}],
23+
[Country].[Name] AS [{nameof(CountryDto.Name)}]
24+
FROM [meetings].[v_Countries] AS [Country]
25+
""";
26+
27+
return (await connection.QueryAsync<CountryDto>(sql)).AsList();
2528
}
2629
}
2730
}

src/Modules/Meetings/Application/MeetingCommentingConfigurations/GetMeetingCommentingConfiguration/GetMeetingCommentingConfigurationQueryHandler.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ public async Task<MeetingCommentingConfigurationDto> Handle(GetMeetingCommenting
1717
{
1818
var connection = _sqlConnectionFactory.GetOpenConnection();
1919

20-
string sql = "SELECT " +
21-
$"[MeetingCommentingConfiguration].[MeetingId] AS [{nameof(MeetingCommentingConfigurationDto.MeetingId)}], " +
22-
$"[MeetingCommentingConfiguration].[IsCommentingEnabled] AS [{nameof(MeetingCommentingConfigurationDto.IsCommentingEnabled)}] " +
23-
"FROM [meetings].[MeetingCommentingConfigurations] AS [MeetingCommentingConfiguration] " +
24-
"WHERE [MeetingCommentingConfiguration].[MeetingId] = @MeetingId";
20+
const string sql = $"""
21+
SELECT
22+
[MeetingCommentingConfiguration].[MeetingId] AS [{nameof(MeetingCommentingConfigurationDto.MeetingId)}],
23+
[MeetingCommentingConfiguration].[IsCommentingEnabled] AS [{nameof(MeetingCommentingConfigurationDto.IsCommentingEnabled)}]
24+
FROM [meetings].[MeetingCommentingConfigurations] AS [MeetingCommentingConfiguration]
25+
WHERE [MeetingCommentingConfiguration].[MeetingId] = @MeetingId
26+
""";
2527

2628
return await connection.QuerySingleOrDefaultAsync<MeetingCommentingConfigurationDto>(sql, new { query.MeetingId });
2729
}

0 commit comments

Comments
 (0)