Files
tiku-backend.net/Tiku.Infrastructure/Jobs/Handlers/BackgroundJobPayload.cs
xiong 7adcb6a3d5
Some checks failed
ci / release-gate (push) Has been cancelled
refactor(jobs): modularize background job handlers
2026-08-03 13:28:21 +08:00

50 lines
1.7 KiB
C#

using System.Text.Json;
namespace Tiku.Infrastructure.Jobs;
internal static class BackgroundJobPayload
{
public static string? GetString(JsonElement element, string propertyName)
{
return element.ValueKind == JsonValueKind.Object &&
element.TryGetProperty(propertyName, out var property) &&
property.ValueKind == JsonValueKind.String
? property.GetString()
: null;
}
public static Guid? GetGuid(JsonElement element, string propertyName)
{
if (element.ValueKind != JsonValueKind.Object ||
!element.TryGetProperty(propertyName, out var property))
return null;
return property.ValueKind == JsonValueKind.String && Guid.TryParse(property.GetString(), out var value)
? value
: null;
}
public static IReadOnlyCollection<JsonElement> GetArray(JsonElement element, string propertyName)
{
if (element.ValueKind != JsonValueKind.Object ||
!element.TryGetProperty(propertyName, out var property) ||
property.ValueKind != JsonValueKind.Array)
return [];
return property.EnumerateArray().Select(item => item.Clone()).ToArray();
}
public static DateOnly? GetDateOnly(JsonElement element, string propertyName)
{
var value = GetString(element, propertyName);
return DateOnly.TryParse(value, out var parsed) ? parsed : null;
}
public static TEnum GetEnum<TEnum>(JsonElement element, string propertyName, TEnum fallback)
where TEnum : struct
{
var value = GetString(element, propertyName);
return Enum.TryParse<TEnum>(value, true, out var parsed) ? parsed : fallback;
}
}