V12: Change nullability for the log searches (#13647)

* Changing nullability

* Obsolete DeleteSavedSearch since the query param is not used

* Fix a bit more referenced

* Add default implementation for the new overload of DeleteSavedSearch
This commit is contained in:
Elitsa Marinovska
2023-01-09 14:16:16 +01:00
committed by GitHub
parent 84d78e1393
commit 5e06f5a8a0
10 changed files with 40 additions and 26 deletions

View File

@@ -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; }
}

View File

@@ -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));
}
}

View File

@@ -14,12 +14,15 @@ public interface ILogViewer
/// <summary>
/// Adds a new saved search to chosen data source and returns the updated searches
/// </summary>
IReadOnlyList<SavedLogSearch> AddSavedSearch(string? name, string? query);
IReadOnlyList<SavedLogSearch> AddSavedSearch(string name, string query);
/// <summary>
/// Deletes a saved search to chosen data source and returns the remaining searches
/// </summary>
IReadOnlyList<SavedLogSearch> DeleteSavedSearch(string? name, string? query);
IReadOnlyList<SavedLogSearch> 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<SavedLogSearch> DeleteSavedSearch(string name, string query);
/// <summary>
/// A count of number of errors

View File

@@ -4,7 +4,10 @@ public interface ILogViewerConfig
{
IReadOnlyList<SavedLogSearch> GetSavedSearches();
IReadOnlyList<SavedLogSearch> AddSavedSearch(string? name, string? query);
IReadOnlyList<SavedLogSearch> AddSavedSearch(string name, string query);
IReadOnlyList<SavedLogSearch> DeleteSavedSearch(string? name, string? query);
[Obsolete("Use the overload that only takes a 'name' parameter instead. This will be removed in Umbraco 14.")]
IReadOnlyList<SavedLogSearch> DeleteSavedSearch(string name, string query);
IReadOnlyList<SavedLogSearch> DeleteSavedSearch(string name) => DeleteSavedSearch(name, string.Empty);
}

View File

@@ -24,7 +24,7 @@ public class LogViewerConfig : ILogViewerConfig
return result;
}
public IReadOnlyList<SavedLogSearch> AddSavedSearch(string? name, string? query)
public IReadOnlyList<SavedLogSearch> 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<SavedLogSearch> 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<SavedLogSearch> DeleteSavedSearch(string name, string query) => DeleteSavedSearch(name);
public IReadOnlyList<SavedLogSearch> 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);

View File

@@ -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; }
}

View File

@@ -24,11 +24,15 @@ public abstract class SerilogLogViewerSourceBase : ILogViewer
public virtual IReadOnlyList<SavedLogSearch> GetSavedSearches()
=> _logViewerConfig.GetSavedSearches();
public virtual IReadOnlyList<SavedLogSearch> AddSavedSearch(string? name, string? query)
public virtual IReadOnlyList<SavedLogSearch> AddSavedSearch(string name, string query)
=> _logViewerConfig.AddSavedSearch(name, query);
public virtual IReadOnlyList<SavedLogSearch> 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<SavedLogSearch> DeleteSavedSearch(string name, string query)
=> DeleteSavedSearch(name);
public virtual IReadOnlyList<SavedLogSearch> DeleteSavedSearch(string name)
=> _logViewerConfig.DeleteSavedSearch(name);
public int GetNumberOfErrors(LogTimePeriod logTimePeriod)
{

View File

@@ -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; }
}

View File

@@ -137,7 +137,7 @@ public class LogViewerController : BackOfficeNotificationsController
[HttpPost]
public IEnumerable<SavedLogSearch> DeleteSavedSearch(SavedLogSearch item) =>
_logViewer.DeleteSavedSearch(item.Name, item.Query);
_logViewer.DeleteSavedSearch(item.Name);
[HttpGet]
public ReadOnlyDictionary<string, LogEventLevel?> GetLogLevels() => _logLevelLoader.GetLogLevelsFromSinks();

View File

@@ -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)");