wip: doctor/cli/docs/api to vector db consolidation; api hardening for descriptions, tenant, and scopes; migrations and conversions of all DALs to EF v10
This commit is contained in:
@@ -1,38 +1,45 @@
|
||||
using Npgsql;
|
||||
using StellaOps.Evidence.Core;
|
||||
using StellaOps.Evidence.Persistence.EfCore.Models;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace StellaOps.Evidence.Persistence.Postgres;
|
||||
|
||||
public sealed partial class PostgresEvidenceStore
|
||||
{
|
||||
private static IEvidence MapEvidence(NpgsqlDataReader reader)
|
||||
private static IEvidence MapFromEntity(EvidenceRecordEntity entity)
|
||||
{
|
||||
var evidenceId = reader.GetString(0);
|
||||
var subjectNodeId = reader.GetString(1);
|
||||
var evidenceType = (EvidenceType)reader.GetInt16(2);
|
||||
var payload = reader.GetFieldValue<byte[]>(3);
|
||||
var payloadSchemaVer = reader.GetString(4);
|
||||
var externalCid = GetNullableString(reader, 5);
|
||||
var provenanceJson = reader.GetString(6);
|
||||
var signaturesJson = reader.GetString(7);
|
||||
var provenance = JsonSerializer.Deserialize<EvidenceProvenance>(entity.Provenance, _jsonOptions)
|
||||
?? throw new InvalidOperationException($"Failed to deserialize provenance for evidence {entity.EvidenceId}");
|
||||
|
||||
var provenance = JsonSerializer.Deserialize<EvidenceProvenance>(provenanceJson, _jsonOptions)
|
||||
?? throw new InvalidOperationException($"Failed to deserialize provenance for evidence {evidenceId}");
|
||||
|
||||
var signatures = JsonSerializer.Deserialize<List<EvidenceSignature>>(signaturesJson, _jsonOptions)
|
||||
var signatures = JsonSerializer.Deserialize<List<EvidenceSignature>>(entity.Signatures, _jsonOptions)
|
||||
?? [];
|
||||
|
||||
return new EvidenceRecord
|
||||
{
|
||||
EvidenceId = evidenceId,
|
||||
SubjectNodeId = subjectNodeId,
|
||||
EvidenceType = evidenceType,
|
||||
Payload = payload,
|
||||
PayloadSchemaVersion = payloadSchemaVer,
|
||||
ExternalPayloadCid = externalCid,
|
||||
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)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user