Files
git.stella-ops.org/src/__Libraries/StellaOps.Evidence.Persistence/Postgres/PostgresEvidenceStore.Map.cs

47 lines
1.8 KiB
C#

using StellaOps.Evidence.Core;
using StellaOps.Evidence.Persistence.EfCore.Models;
using System.Text.Json;
using static StellaOps.Localization.T;
namespace StellaOps.Evidence.Persistence.Postgres;
public sealed partial class PostgresEvidenceStore
{
private static IEvidence MapFromEntity(EvidenceRecordEntity entity)
{
var provenance = JsonSerializer.Deserialize<EvidenceProvenance>(entity.Provenance, _jsonOptions)
?? throw new InvalidOperationException(_t("common.evidence.provenance_deserialize_failed", entity.EvidenceId));
var signatures = JsonSerializer.Deserialize<List<EvidenceSignature>>(entity.Signatures, _jsonOptions)
?? [];
return new EvidenceRecord
{
EvidenceId = entity.EvidenceId,
SubjectNodeId = entity.SubjectNodeId,
EvidenceType = (EvidenceType)entity.EvidenceType,
Payload = entity.Payload,
PayloadSchemaVersion = entity.PayloadSchemaVer,
ExternalPayloadCid = entity.ExternalCid,
Provenance = provenance,
Signatures = signatures
};
}
private EvidenceRecordEntity MapToEntity(IEvidence evidence)
{
return new EvidenceRecordEntity
{
EvidenceId = evidence.EvidenceId,
SubjectNodeId = evidence.SubjectNodeId,
EvidenceType = (short)evidence.EvidenceType,
Payload = evidence.Payload.ToArray(),
PayloadSchemaVer = evidence.PayloadSchemaVersion,
ExternalCid = evidence.ExternalPayloadCid,
Provenance = JsonSerializer.Serialize(evidence.Provenance, _jsonOptions),
Signatures = JsonSerializer.Serialize(evidence.Signatures, _jsonOptions),
TenantId = Guid.Parse(_tenantId)
};
}
}