47 lines
1.8 KiB
C#
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)
|
|
};
|
|
}
|
|
}
|