mapped-ids-then-whole-percentages-to-location-container save-extracted-face save-extracted-java-script-object-notation
77 lines
4.0 KiB
C#
77 lines
4.0 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace View_by_Distance.Shared.Models;
|
|
|
|
public record LocationContainer(DateOnly? CreationDateOnly,
|
|
ExifDirectory? ExifDirectory,
|
|
object? Encoding,
|
|
FaceFile? FaceFile,
|
|
FilePath FilePath,
|
|
int? LengthPermyriad,
|
|
FilePath? LengthSource,
|
|
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName? PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName,
|
|
int? WholePercentages)
|
|
{
|
|
|
|
public string GetWithoutEncoding()
|
|
{
|
|
string result;
|
|
WithoutEncoding withoutEncoding = new(CreationDateOnly: CreationDateOnly,
|
|
ExifDirectory: ExifDirectory,
|
|
FaceFile: FaceFile,
|
|
FilePath: FilePath,
|
|
LengthPermyriad: LengthPermyriad,
|
|
LengthSource: LengthSource,
|
|
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName: PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName,
|
|
WholePercentages: WholePercentages);
|
|
result = JsonSerializer.Serialize(withoutEncoding, WithoutEncodingSourceGenerationContext.Default.WithoutEncoding);
|
|
return result;
|
|
}
|
|
|
|
public static LocationContainer Get(LocationContainer locationContainer, object? encoding)
|
|
{
|
|
LocationContainer result;
|
|
result = new(CreationDateOnly: locationContainer.CreationDateOnly,
|
|
ExifDirectory: locationContainer.ExifDirectory,
|
|
Encoding: encoding,
|
|
FaceFile: locationContainer.FaceFile,
|
|
FilePath: locationContainer.FilePath,
|
|
LengthPermyriad: locationContainer.LengthPermyriad,
|
|
LengthSource: locationContainer.LengthSource,
|
|
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName: locationContainer.PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName,
|
|
WholePercentages: locationContainer.WholePercentages);
|
|
return result;
|
|
}
|
|
|
|
public static LocationContainer Get(LocationContainer source, LocationContainer locationContainer, int lengthPermyriad, bool keepExifDirectory, bool keepEncoding)
|
|
{
|
|
LocationContainer result;
|
|
result = new(CreationDateOnly: locationContainer.CreationDateOnly,
|
|
ExifDirectory: keepExifDirectory ? locationContainer.ExifDirectory : null,
|
|
Encoding: keepEncoding ? locationContainer.Encoding : null,
|
|
FaceFile: locationContainer.FaceFile,
|
|
FilePath: locationContainer.FilePath,
|
|
LengthPermyriad: lengthPermyriad,
|
|
LengthSource: source.FilePath,
|
|
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName: locationContainer.PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName,
|
|
WholePercentages: locationContainer.WholePercentages);
|
|
return result;
|
|
}
|
|
|
|
}
|
|
|
|
internal record WithoutEncoding(DateOnly? CreationDateOnly,
|
|
ExifDirectory? ExifDirectory,
|
|
FaceFile? FaceFile,
|
|
FilePath FilePath,
|
|
int? LengthPermyriad,
|
|
FilePath? LengthSource,
|
|
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName? PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName,
|
|
int? WholePercentages);
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]
|
|
[JsonSerializable(typeof(WithoutEncoding))]
|
|
internal partial class WithoutEncodingSourceGenerationContext : JsonSerializerContext
|
|
{
|
|
} |