PreVerify
This commit is contained in:
@ -19,6 +19,23 @@ public class AppSettings
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings)
|
||||
{
|
||||
if (appSettings?.Company is null)
|
||||
{
|
||||
List<string> paths = [];
|
||||
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
|
||||
{
|
||||
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
||||
continue;
|
||||
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
||||
continue;
|
||||
paths.Add(physicalFileProvider.Root);
|
||||
}
|
||||
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
||||
}
|
||||
}
|
||||
|
||||
private static Models.AppSettings Get(AppSettings? appSettings)
|
||||
{
|
||||
Models.AppSettings result;
|
||||
@ -42,6 +59,7 @@ public class AppSettings
|
||||
#pragma warning disable IL3050, IL2026
|
||||
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
|
||||
#pragma warning restore IL3050, IL2026
|
||||
PreVerify(configurationRoot, appSettings);
|
||||
result = Get(appSettings);
|
||||
return result;
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ public class Configuration
|
||||
public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; }
|
||||
public bool? ForceResizeLastWriteTimeToCreationTime { get; set; }
|
||||
public string? GenealogicalDataCommunicationFile { get; set; }
|
||||
public string? ImmichAssetsFile { get; set; }
|
||||
public string[]? IgnoreExtensions { get; set; }
|
||||
public string[]? JLinks { get; set; }
|
||||
public string? LinkedAlpha { get; set; }
|
||||
@ -93,6 +94,7 @@ public class Configuration
|
||||
public int? SortingMaximumPerKey { get; set; }
|
||||
public int? SortingMinimumToUseSigma { get; set; }
|
||||
public bool? TestDistanceResults { get; set; }
|
||||
public bool? UseExtraPersonKeyCheck { get; set; }
|
||||
public int? UseFilterTries { get; set; }
|
||||
public string[]? ValidKeyWordsToIgnoreInRandom { get; set; }
|
||||
public string[]? ValidResolutions { get; set; }
|
||||
@ -103,7 +105,22 @@ public class Configuration
|
||||
return result;
|
||||
}
|
||||
|
||||
#pragma warning restore csharp_preserve_single_line_statements
|
||||
private static void PreVerify(IConfigurationRoot configurationRoot, Configuration? configuration)
|
||||
{
|
||||
if (configuration?.CheckDFaceAndUpWriteDates is null)
|
||||
{
|
||||
List<string> paths = [];
|
||||
foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers)
|
||||
{
|
||||
if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider)
|
||||
continue;
|
||||
if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider)
|
||||
continue;
|
||||
paths.Add(physicalFileProvider.Root);
|
||||
}
|
||||
throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}");
|
||||
}
|
||||
}
|
||||
|
||||
private static Models.Configuration Get(Configuration? configuration, Property.Models.Configuration propertyConfiguration)
|
||||
{
|
||||
@ -130,6 +147,7 @@ public class Configuration
|
||||
if (configuration?.ForceMetadataLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime));
|
||||
if (configuration?.ForceResizeLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime));
|
||||
if (configuration?.GenealogicalDataCommunicationFile is null) throw new NullReferenceException(nameof(configuration.GenealogicalDataCommunicationFile));
|
||||
if (configuration?.ImmichAssetsFile is null) throw new NullReferenceException(nameof(configuration.ImmichAssetsFile));
|
||||
// if (configuration?.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
|
||||
// if (configuration?.JLinks is null) throw new NullReferenceException(nameof(configuration.JLinks));
|
||||
// if (configuration?.LinkedAlpha is null) throw new NullReferenceException(nameof(configuration.LinkedAlpha));
|
||||
@ -196,6 +214,7 @@ public class Configuration
|
||||
if (configuration?.SortingMaximumPerKey is null) throw new NullReferenceException(nameof(configuration.SortingMaximumPerKey));
|
||||
if (configuration?.SortingMinimumToUseSigma is null) throw new NullReferenceException(nameof(configuration.SortingMinimumToUseSigma));
|
||||
if (configuration?.TestDistanceResults is null) throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
||||
if (configuration?.UseExtraPersonKeyCheck is null) throw new NullReferenceException(nameof(configuration.UseExtraPersonKeyCheck));
|
||||
if (configuration?.UseFilterTries is null) throw new NullReferenceException(nameof(configuration.UseFilterTries));
|
||||
// if (configuration?.ValidKeyWordsToIgnoreInRandom is null) throw new NullReferenceException(nameof(configuration.ValidKeyWordsToIgnoreInRandom));
|
||||
// if (configuration?.ValidResolutions is null) throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
||||
@ -220,6 +239,7 @@ public class Configuration
|
||||
configuration.ForceMetadataLastWriteTimeToCreationTime.Value,
|
||||
configuration.ForceResizeLastWriteTimeToCreationTime.Value,
|
||||
configuration.GenealogicalDataCommunicationFile,
|
||||
configuration.ImmichAssetsFile,
|
||||
configuration.IgnoreExtensions ?? [],
|
||||
configuration.JLinks ?? [],
|
||||
configuration.LinkedAlpha,
|
||||
@ -286,6 +306,7 @@ public class Configuration
|
||||
configuration.SortingMaximumPerKey.Value,
|
||||
configuration.SortingMinimumToUseSigma.Value,
|
||||
configuration.TestDistanceResults.Value,
|
||||
configuration.UseExtraPersonKeyCheck.Value,
|
||||
configuration.UseFilterTries.Value,
|
||||
configuration.ValidKeyWordsToIgnoreInRandom ?? [],
|
||||
configuration.ValidResolutions ?? []);
|
||||
@ -297,14 +318,19 @@ public class Configuration
|
||||
Models.Configuration result;
|
||||
Configuration? configuration;
|
||||
if (isEnvironment is null)
|
||||
#pragma warning disable IL3050, IL2026
|
||||
configuration = configurationRoot.Get<Configuration>();
|
||||
#pragma warning restore IL3050, IL2026
|
||||
else
|
||||
{
|
||||
string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment);
|
||||
string section = string.Concat(environmentName, ":", nameof(Configuration));
|
||||
IConfigurationSection configurationSection = configurationRoot.GetSection(section);
|
||||
#pragma warning disable IL3050, IL2026
|
||||
configuration = configurationSection.Get<Configuration>();
|
||||
#pragma warning restore IL3050, IL2026
|
||||
}
|
||||
PreVerify(configurationRoot, configuration);
|
||||
result = Get(configuration, propertyConfiguration);
|
||||
return result;
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ public record Configuration(Property.Models.Configuration PropertyConfiguration,
|
||||
bool ForceMetadataLastWriteTimeToCreationTime,
|
||||
bool ForceResizeLastWriteTimeToCreationTime,
|
||||
string GenealogicalDataCommunicationFile,
|
||||
string ImmichAssetsFile,
|
||||
string[] IgnoreExtensions,
|
||||
string[] JLinks,
|
||||
string? LinkedAlpha,
|
||||
@ -87,6 +88,7 @@ public record Configuration(Property.Models.Configuration PropertyConfiguration,
|
||||
int SortingMaximumPerKey,
|
||||
int SortingMinimumToUseSigma,
|
||||
bool TestDistanceResults,
|
||||
bool UseExtraPersonKeyCheck,
|
||||
int UseFilterTries,
|
||||
string[] ValidKeyWordsToIgnoreInRandom,
|
||||
string[] ValidResolutions);
|
Reference in New Issue
Block a user