40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace ImmichToSlideshow.Models;
|
|
|
|
public sealed record Identifier(string[] DirectoryNames,
|
|
string Extension,
|
|
bool? HasDateTimeOriginal,
|
|
int Id,
|
|
long Length,
|
|
string PaddedId,
|
|
long Ticks)
|
|
{
|
|
|
|
public override string ToString()
|
|
{
|
|
string result = JsonSerializer.Serialize(this, IdentifierSourceGenerationContext.Default.Identifier);
|
|
return result;
|
|
}
|
|
|
|
internal static string GetDeviceAssetIds(ReadOnlyCollection<Identifier> identifiers) =>
|
|
$"'{string.Join($"',{Environment.NewLine}'", (from l in identifiers select GetDeviceAssetId(l)).ToArray())}'";
|
|
|
|
internal static string GetDeviceAssetId(Identifier identifier) =>
|
|
$"{identifier.PaddedId}{identifier.Extension}";
|
|
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
[JsonSerializable(typeof(Identifier))]
|
|
public partial class IdentifierSourceGenerationContext : JsonSerializerContext
|
|
{
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
[JsonSerializable(typeof(Identifier[]))]
|
|
public partial class IdentifierCollectionSourceGenerationContext : JsonSerializerContext
|
|
{
|
|
} |