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(entity.Provenance, _jsonOptions) ?? throw new InvalidOperationException(_t("common.evidence.provenance_deserialize_failed", entity.EvidenceId)); var signatures = JsonSerializer.Deserialize>(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) }; } }