Files
git.stella-ops.org/src/Concelier/__Libraries/StellaOps.Concelier.RawModels/RawDocumentFactory.cs
2025-10-28 15:10:40 +02:00

40 lines
1.3 KiB
C#

using System.Collections.Immutable;
using System.Text.Json;
namespace StellaOps.Concelier.RawModels;
public static class RawDocumentFactory
{
public static AdvisoryRawDocument CreateAdvisory(
string tenant,
RawSourceMetadata source,
RawUpstreamMetadata upstream,
RawContent content,
RawIdentifiers identifiers,
RawLinkset linkset,
string? supersedes = null)
{
var clonedContent = content with { Raw = Clone(content.Raw) };
return new AdvisoryRawDocument(tenant, source, upstream, clonedContent, identifiers, linkset, supersedes);
}
public static VexRawDocument CreateVex(
string tenant,
RawSourceMetadata source,
RawUpstreamMetadata upstream,
RawContent content,
RawLinkset linkset,
ImmutableArray<VexStatementSummary> statements,
string? supersedes = null)
{
var clonedContent = content with { Raw = Clone(content.Raw) };
return new VexRawDocument(tenant, source, upstream, clonedContent, linkset, statements, supersedes);
}
private static JsonElement Clone(JsonElement element)
{
using var document = JsonDocument.Parse(element.GetRawText());
return document.RootElement.Clone();
}
}