diff --git a/src/Umbraco.Core/Models/ILogViewerQuery.cs b/src/Umbraco.Core/Models/ILogViewerQuery.cs
index 372fddc3d0..61798b1ca3 100644
--- a/src/Umbraco.Core/Models/ILogViewerQuery.cs
+++ b/src/Umbraco.Core/Models/ILogViewerQuery.cs
@@ -4,7 +4,7 @@ namespace Umbraco.Cms.Core.Models;
public interface ILogViewerQuery : IEntity
{
- string? Name { get; set; }
+ string Name { get; set; }
- string? Query { get; set; }
+ string Query { get; set; }
}
diff --git a/src/Umbraco.Core/Models/LogViewerQuery.cs b/src/Umbraco.Core/Models/LogViewerQuery.cs
index 5941763e24..ec0a2af4b7 100644
--- a/src/Umbraco.Core/Models/LogViewerQuery.cs
+++ b/src/Umbraco.Core/Models/LogViewerQuery.cs
@@ -7,26 +7,26 @@ namespace Umbraco.Cms.Core.Models;
[DataContract(IsReference = true)]
public class LogViewerQuery : EntityBase, ILogViewerQuery
{
- private string? _name;
- private string? _query;
+ private string _name = string.Empty;
+ private string _query = string.Empty;
- public LogViewerQuery(string? name, string? query)
+ public LogViewerQuery(string name, string query)
{
Name = name;
- _query = query;
+ Query = query;
}
[DataMember]
- public string? Name
+ public string Name
{
get => _name;
- set => SetPropertyValueAndDetectChanges(value, ref _name, nameof(Name));
+ set => SetPropertyValueAndDetectChanges(value, ref _name!, nameof(Name));
}
[DataMember]
- public string? Query
+ public string Query
{
get => _query;
- set => SetPropertyValueAndDetectChanges(value, ref _query, nameof(Query));
+ set => SetPropertyValueAndDetectChanges(value, ref _query!, nameof(Query));
}
}
diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs
index e16f06b231..711906043a 100644
--- a/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs
+++ b/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs
@@ -14,12 +14,15 @@ public interface ILogViewer
///
/// Adds a new saved search to chosen data source and returns the updated searches
///
- IReadOnlyList AddSavedSearch(string? name, string? query);
+ IReadOnlyList AddSavedSearch(string name, string query);
///
/// Deletes a saved search to chosen data source and returns the remaining searches
///
- IReadOnlyList DeleteSavedSearch(string? name, string? query);
+ IReadOnlyList DeleteSavedSearch(string name) => DeleteSavedSearch(name, string.Empty);
+
+ [Obsolete("Use the overload that only takes a 'name' parameter instead. This will be removed in Umbraco 14.")]
+ IReadOnlyList DeleteSavedSearch(string name, string query);
///
/// A count of number of errors
diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewerConfig.cs b/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewerConfig.cs
index a6b98291c9..ed67c58b5d 100644
--- a/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewerConfig.cs
+++ b/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewerConfig.cs
@@ -4,7 +4,10 @@ public interface ILogViewerConfig
{
IReadOnlyList GetSavedSearches();
- IReadOnlyList AddSavedSearch(string? name, string? query);
+ IReadOnlyList AddSavedSearch(string name, string query);
- IReadOnlyList DeleteSavedSearch(string? name, string? query);
+ [Obsolete("Use the overload that only takes a 'name' parameter instead. This will be removed in Umbraco 14.")]
+ IReadOnlyList DeleteSavedSearch(string name, string query);
+
+ IReadOnlyList DeleteSavedSearch(string name) => DeleteSavedSearch(name, string.Empty);
}
diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerConfig.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerConfig.cs
index 15f7f8996c..ecd9aaf329 100644
--- a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerConfig.cs
+++ b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerConfig.cs
@@ -24,7 +24,7 @@ public class LogViewerConfig : ILogViewerConfig
return result;
}
- public IReadOnlyList AddSavedSearch(string? name, string? query)
+ public IReadOnlyList AddSavedSearch(string name, string query)
{
using IScope scope = _scopeProvider.CreateScope(autoComplete: true);
_logViewerQueryRepository.Save(new LogViewerQuery(name, query));
@@ -32,10 +32,14 @@ public class LogViewerConfig : ILogViewerConfig
return GetSavedSearches();
}
- public IReadOnlyList DeleteSavedSearch(string? name, string? query)
+ [Obsolete("Use the overload that only takes a 'name' parameter instead. This will be removed in Umbraco 14.")]
+ public IReadOnlyList DeleteSavedSearch(string name, string query) => DeleteSavedSearch(name);
+
+ public IReadOnlyList DeleteSavedSearch(string name)
{
using IScope scope = _scopeProvider.CreateScope(autoComplete: true);
- ILogViewerQuery? item = name is null ? null : _logViewerQueryRepository.GetByName(name);
+ ILogViewerQuery? item = _logViewerQueryRepository.GetByName(name);
+
if (item is not null)
{
_logViewerQueryRepository.Delete(item);
diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/SavedLogSearch.cs b/src/Umbraco.Infrastructure/Logging/Viewer/SavedLogSearch.cs
index 320f121890..5393bcd54d 100644
--- a/src/Umbraco.Infrastructure/Logging/Viewer/SavedLogSearch.cs
+++ b/src/Umbraco.Infrastructure/Logging/Viewer/SavedLogSearch.cs
@@ -5,8 +5,8 @@ namespace Umbraco.Cms.Core.Logging.Viewer;
public class SavedLogSearch
{
[JsonProperty("name")]
- public string? Name { get; set; }
+ public required string Name { get; set; }
[JsonProperty("query")]
- public string? Query { get; set; }
+ public required string Query { get; set; }
}
diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/SerilogLogViewerSourceBase.cs b/src/Umbraco.Infrastructure/Logging/Viewer/SerilogLogViewerSourceBase.cs
index c41d384640..e83597d216 100644
--- a/src/Umbraco.Infrastructure/Logging/Viewer/SerilogLogViewerSourceBase.cs
+++ b/src/Umbraco.Infrastructure/Logging/Viewer/SerilogLogViewerSourceBase.cs
@@ -24,11 +24,15 @@ public abstract class SerilogLogViewerSourceBase : ILogViewer
public virtual IReadOnlyList GetSavedSearches()
=> _logViewerConfig.GetSavedSearches();
- public virtual IReadOnlyList AddSavedSearch(string? name, string? query)
+ public virtual IReadOnlyList AddSavedSearch(string name, string query)
=> _logViewerConfig.AddSavedSearch(name, query);
- public virtual IReadOnlyList DeleteSavedSearch(string? name, string? query)
- => _logViewerConfig.DeleteSavedSearch(name, query);
+ [Obsolete("Use the overload that only takes a 'name' parameter instead. This will be removed in Umbraco 14.")]
+ public virtual IReadOnlyList DeleteSavedSearch(string name, string query)
+ => DeleteSavedSearch(name);
+
+ public virtual IReadOnlyList DeleteSavedSearch(string name)
+ => _logViewerConfig.DeleteSavedSearch(name);
public int GetNumberOfErrors(LogTimePeriod logTimePeriod)
{
diff --git a/src/Umbraco.Infrastructure/Persistence/Dtos/LogViewerQueryDto.cs b/src/Umbraco.Infrastructure/Persistence/Dtos/LogViewerQueryDto.cs
index a39c4ef756..6de89b1c64 100644
--- a/src/Umbraco.Infrastructure/Persistence/Dtos/LogViewerQueryDto.cs
+++ b/src/Umbraco.Infrastructure/Persistence/Dtos/LogViewerQueryDto.cs
@@ -15,8 +15,8 @@ internal class LogViewerQueryDto
[Column("name")]
[Index(IndexTypes.UniqueNonClustered, Name = "IX_LogViewerQuery_name")]
- public string? Name { get; set; }
+ public required string Name { get; set; }
[Column("query")]
- public string? Query { get; set; }
+ public required string Query { get; set; }
}
diff --git a/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs b/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs
index ed3994e6df..74615e1fa8 100644
--- a/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs
+++ b/src/Umbraco.Web.BackOffice/Controllers/LogViewerController.cs
@@ -137,7 +137,7 @@ public class LogViewerController : BackOfficeNotificationsController
[HttpPost]
public IEnumerable DeleteSavedSearch(SavedLogSearch item) =>
- _logViewer.DeleteSavedSearch(item.Name, item.Query);
+ _logViewer.DeleteSavedSearch(item.Name);
[HttpGet]
public ReadOnlyDictionary GetLogLevels() => _logLevelLoader.GetLogLevelsFromSinks();
diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs
index 45c8929628..d8760c2e1e 100644
--- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs
+++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Logging/LogviewerTests.cs
@@ -223,7 +223,7 @@ public class LogviewerTests
// Assert.That(searches, Contains.Item(savedSearch));
// Remove the search from above & ensure it no longer exists
- _logViewer.DeleteSavedSearch("Unit Test Example", "Has(UnitTest)");
+ _logViewer.DeleteSavedSearch("Unit Test Example");
searches = _logViewer.GetSavedSearches();
findItem = searches.Where(x => x.Name == "Unit Test Example" && x.Query == "Has(UnitTest)");