public async Task <GameViewModel> GetFilteredItemAsync(GameQueryRequest request) { var queryArgs = new DynamicParameters(); var query = $@"SELECT Id, Name, Genre, Synopsis, Platform, LaunchDate, IsAvailable, IsActive FROM [Game] {FormatQueryFilter(request, ref queryArgs)} ORDER BY Name"; return((await _sqlConnection.QueryAsync <GameViewModel>(query, queryArgs)).FirstOrDefault()); }
private static string FormatQueryFilter(GameQueryRequest request, ref DynamicParameters queryArgs) { var filter = string.Empty; if (request.Id.HasValue) { queryArgs.Add("Id", request.Id); filter += filter.Length > 0 ? "AND Id = @Id " : "WHERE Id = @Id "; } if (request.IsAvailable.HasValue) { queryArgs.Add("IsAvailable", request.IsAvailable.Value); filter += filter.Length > 0 ? "AND IsAvailable = @IsAvailable " : "WHERE IsAvailable = @IsAvailable"; } return(filter); }