Search/AdvisoryAI and DAL conversion to EF finishes up. Preparation for microservices consolidation.

This commit is contained in:
master
2026-02-25 18:19:22 +02:00
parent 4db038123b
commit 63c70a6d37
447 changed files with 52257 additions and 2636 deletions

View File

@@ -0,0 +1,153 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageAttestationEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageAttestation",
typeof(TriageAttestation),
baseEntityType,
propertyCount: 8,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 1,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageAttestation).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var collectedAt = runtimeEntityType.AddProperty(
"CollectedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageAttestation).GetProperty("CollectedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<CollectedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
collectedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
collectedAt.AddAnnotation("Relational:ColumnName", "collected_at");
var contentRef = runtimeEntityType.AddProperty(
"ContentRef",
typeof(string),
propertyInfo: typeof(TriageAttestation).GetProperty("ContentRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<ContentRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
contentRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
contentRef.AddAnnotation("Relational:ColumnName", "content_ref");
var envelopeHash = runtimeEntityType.AddProperty(
"EnvelopeHash",
typeof(string),
propertyInfo: typeof(TriageAttestation).GetProperty("EnvelopeHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<EnvelopeHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
envelopeHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
envelopeHash.AddAnnotation("Relational:ColumnName", "envelope_hash");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageAttestation).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var issuer = runtimeEntityType.AddProperty(
"Issuer",
typeof(string),
propertyInfo: typeof(TriageAttestation).GetProperty("Issuer", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<Issuer>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
issuer.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
issuer.AddAnnotation("Relational:ColumnName", "issuer");
var ledgerRef = runtimeEntityType.AddProperty(
"LedgerRef",
typeof(string),
propertyInfo: typeof(TriageAttestation).GetProperty("LedgerRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<LedgerRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
ledgerRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ledgerRef.AddAnnotation("Relational:ColumnName", "ledger_ref");
var type = runtimeEntityType.AddProperty(
"Type",
typeof(string),
propertyInfo: typeof(TriageAttestation).GetProperty("Type", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<Type>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
type.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
type.AddAnnotation("Relational:ColumnName", "type");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId });
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageAttestation).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageAttestation).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var attestations = principalEntityType.AddNavigation("Attestations",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageAttestation>),
propertyInfo: typeof(TriageFinding).GetProperty("Attestations", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Attestations>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_attestation");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,265 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageCaseCurrentEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageCaseCurrent",
typeof(TriageCaseCurrent),
baseEntityType,
propertyCount: 25);
var assetId = runtimeEntityType.AddProperty(
"AssetId",
typeof(Guid),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("AssetId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<AssetId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
assetId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
assetId.AddAnnotation("Relational:ColumnName", "asset_id");
var assetLabel = runtimeEntityType.AddProperty(
"AssetLabel",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("AssetLabel", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<AssetLabel>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
assetLabel.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
assetLabel.AddAnnotation("Relational:ColumnName", "asset_label");
var caseId = runtimeEntityType.AddProperty(
"CaseId",
typeof(Guid),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("CaseId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<CaseId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
caseId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
caseId.AddAnnotation("Relational:ColumnName", "case_id");
var cveId = runtimeEntityType.AddProperty(
"CveId",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("CveId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<CveId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
cveId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
cveId.AddAnnotation("Relational:ColumnName", "cve_id");
var environmentId = runtimeEntityType.AddProperty(
"EnvironmentId",
typeof(Guid?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("EnvironmentId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<EnvironmentId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
environmentId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
environmentId.AddAnnotation("Relational:ColumnName", "environment_id");
var firstSeenAt = runtimeEntityType.AddProperty(
"FirstSeenAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("FirstSeenAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<FirstSeenAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
firstSeenAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
firstSeenAt.AddAnnotation("Relational:ColumnName", "first_seen_at");
var inputsHash = runtimeEntityType.AddProperty(
"InputsHash",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("InputsHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<InputsHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
inputsHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
inputsHash.AddAnnotation("Relational:ColumnName", "inputs_hash");
var lane = runtimeEntityType.AddProperty(
"Lane",
typeof(TriageLane?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("Lane", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<Lane>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
lane.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
lane.AddAnnotation("Relational:ColumnName", "lane");
var lastSeenAt = runtimeEntityType.AddProperty(
"LastSeenAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("LastSeenAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<LastSeenAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
lastSeenAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
lastSeenAt.AddAnnotation("Relational:ColumnName", "last_seen_at");
var policyId = runtimeEntityType.AddProperty(
"PolicyId",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("PolicyId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<PolicyId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
policyId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyId.AddAnnotation("Relational:ColumnName", "policy_id");
var policyVersion = runtimeEntityType.AddProperty(
"PolicyVersion",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("PolicyVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<PolicyVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
policyVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyVersion.AddAnnotation("Relational:ColumnName", "policy_version");
var purl = runtimeEntityType.AddProperty(
"Purl",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("Purl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<Purl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
purl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
purl.AddAnnotation("Relational:ColumnName", "purl");
var reachConfidence = runtimeEntityType.AddProperty(
"ReachConfidence",
typeof(short?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("ReachConfidence", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<ReachConfidence>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reachConfidence.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reachConfidence.AddAnnotation("Relational:ColumnName", "reach_confidence");
var reachable = runtimeEntityType.AddProperty(
"Reachable",
typeof(TriageReachability),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("Reachable", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<Reachable>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageReachability.Yes);
reachable.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reachable.AddAnnotation("Relational:ColumnName", "reachable");
var riskComputedAt = runtimeEntityType.AddProperty(
"RiskComputedAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("RiskComputedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<RiskComputedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
riskComputedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
riskComputedAt.AddAnnotation("Relational:ColumnName", "risk_computed_at");
var ruleId = runtimeEntityType.AddProperty(
"RuleId",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("RuleId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<RuleId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
ruleId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ruleId.AddAnnotation("Relational:ColumnName", "rule_id");
var score = runtimeEntityType.AddProperty(
"Score",
typeof(int?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("Score", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<Score>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
score.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
score.AddAnnotation("Relational:ColumnName", "score");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var verdict = runtimeEntityType.AddProperty(
"Verdict",
typeof(TriageVerdict?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("Verdict", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<Verdict>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
verdict.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
verdict.AddAnnotation("Relational:ColumnName", "verdict");
var vexIssuer = runtimeEntityType.AddProperty(
"VexIssuer",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("VexIssuer", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<VexIssuer>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexIssuer.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexIssuer.AddAnnotation("Relational:ColumnName", "vex_issuer");
var vexSignatureRef = runtimeEntityType.AddProperty(
"VexSignatureRef",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("VexSignatureRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<VexSignatureRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexSignatureRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexSignatureRef.AddAnnotation("Relational:ColumnName", "vex_signature_ref");
var vexSourceDomain = runtimeEntityType.AddProperty(
"VexSourceDomain",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("VexSourceDomain", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<VexSourceDomain>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexSourceDomain.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexSourceDomain.AddAnnotation("Relational:ColumnName", "vex_source_domain");
var vexSourceRef = runtimeEntityType.AddProperty(
"VexSourceRef",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("VexSourceRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<VexSourceRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexSourceRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexSourceRef.AddAnnotation("Relational:ColumnName", "vex_source_ref");
var vexStatus = runtimeEntityType.AddProperty(
"VexStatus",
typeof(TriageVexStatus?),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("VexStatus", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<VexStatus>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexStatus.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexStatus.AddAnnotation("Relational:ColumnName", "vex_status");
var why = runtimeEntityType.AddProperty(
"Why",
typeof(string),
propertyInfo: typeof(TriageCaseCurrent).GetProperty("Why", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageCaseCurrent).GetField("<Why>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
why.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
why.AddAnnotation("Relational:ColumnName", "why");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", null);
runtimeEntityType.AddAnnotation("Relational:ViewDefinitionSql", null);
runtimeEntityType.AddAnnotation("Relational:ViewName", "v_triage_case_current");
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,9 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore.Infrastructure;
using StellaOps.Scanner.Triage;
using StellaOps.Scanner.Triage.CompiledModels;
#pragma warning disable 219, 612, 618
#nullable disable
[assembly: DbContextModel(typeof(TriageDbContext), typeof(TriageDbContextModel))]

View File

@@ -0,0 +1,47 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[DbContext(typeof(TriageDbContext))]
public partial class TriageDbContextModel : RuntimeModel
{
private static readonly bool _useOldBehavior31751 =
System.AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue31751", out var enabled31751) && enabled31751;
static TriageDbContextModel()
{
var model = new TriageDbContextModel();
if (_useOldBehavior31751)
{
model.Initialize();
}
else
{
var thread = new System.Threading.Thread(RunInitialization, 10 * 1024 * 1024);
thread.Start();
thread.Join();
void RunInitialization()
{
model.Initialize();
}
}
model.Customize();
_instance = (TriageDbContextModel)model.FinalizeModel();
}
private static TriageDbContextModel _instance;
public static IModel Instance => _instance;
partial void Initialize();
partial void Customize();
}
}

View File

@@ -0,0 +1,60 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
public partial class TriageDbContextModel
{
private TriageDbContextModel()
: base(skipDetectChanges: false, modelId: new Guid("85af94ff-7af7-4449-874e-e38409c16dfb"), entityTypeCount: 11)
{
}
partial void Initialize()
{
var triageAttestation = TriageAttestationEntityType.Create(this);
var triageCaseCurrent = TriageCaseCurrentEntityType.Create(this);
var triageDecision = TriageDecisionEntityType.Create(this);
var triageEffectiveVex = TriageEffectiveVexEntityType.Create(this);
var triageEvidenceArtifact = TriageEvidenceArtifactEntityType.Create(this);
var triageFinding = TriageFindingEntityType.Create(this);
var triagePolicyDecision = TriagePolicyDecisionEntityType.Create(this);
var triageReachabilityResult = TriageReachabilityResultEntityType.Create(this);
var triageRiskResult = TriageRiskResultEntityType.Create(this);
var triageScan = TriageScanEntityType.Create(this);
var triageSnapshot = TriageSnapshotEntityType.Create(this);
TriageAttestationEntityType.CreateForeignKey1(triageAttestation, triageFinding);
TriageDecisionEntityType.CreateForeignKey1(triageDecision, triageFinding);
TriageEffectiveVexEntityType.CreateForeignKey1(triageEffectiveVex, triageFinding);
TriageEvidenceArtifactEntityType.CreateForeignKey1(triageEvidenceArtifact, triageFinding);
TriageFindingEntityType.CreateForeignKey1(triageFinding, triageScan);
TriagePolicyDecisionEntityType.CreateForeignKey1(triagePolicyDecision, triageFinding);
TriageReachabilityResultEntityType.CreateForeignKey1(triageReachabilityResult, triageFinding);
TriageRiskResultEntityType.CreateForeignKey1(triageRiskResult, triageFinding);
TriageSnapshotEntityType.CreateForeignKey1(triageSnapshot, triageFinding);
TriageAttestationEntityType.CreateAnnotations(triageAttestation);
TriageCaseCurrentEntityType.CreateAnnotations(triageCaseCurrent);
TriageDecisionEntityType.CreateAnnotations(triageDecision);
TriageEffectiveVexEntityType.CreateAnnotations(triageEffectiveVex);
TriageEvidenceArtifactEntityType.CreateAnnotations(triageEvidenceArtifact);
TriageFindingEntityType.CreateAnnotations(triageFinding);
TriagePolicyDecisionEntityType.CreateAnnotations(triagePolicyDecision);
TriageReachabilityResultEntityType.CreateAnnotations(triageReachabilityResult);
TriageRiskResultEntityType.CreateAnnotations(triageRiskResult);
TriageScanEntityType.CreateAnnotations(triageScan);
TriageSnapshotEntityType.CreateAnnotations(triageSnapshot);
AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
AddAnnotation("ProductVersion", "10.0.0");
AddAnnotation("Relational:MaxIdentifierLength", 63);
}
}
}

View File

@@ -0,0 +1,234 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageDecisionEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageDecision",
typeof(TriageDecision),
baseEntityType,
propertyCount: 16,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageDecision).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var actorDisplay = runtimeEntityType.AddProperty(
"ActorDisplay",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("ActorDisplay", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<ActorDisplay>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
actorDisplay.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
actorDisplay.AddAnnotation("Relational:ColumnName", "actor_display");
var actorSubject = runtimeEntityType.AddProperty(
"ActorSubject",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("ActorSubject", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<ActorSubject>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
actorSubject.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
actorSubject.AddAnnotation("Relational:ColumnName", "actor_subject");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageDecision).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAt.AddAnnotation("Relational:ColumnName", "created_at");
var dsseHash = runtimeEntityType.AddProperty(
"DsseHash",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("DsseHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<DsseHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
dsseHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
dsseHash.AddAnnotation("Relational:ColumnName", "dsse_hash");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageDecision).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var kind = runtimeEntityType.AddProperty(
"Kind",
typeof(TriageDecisionKind),
propertyInfo: typeof(TriageDecision).GetProperty("Kind", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<Kind>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageDecisionKind.MuteReach);
kind.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
kind.AddAnnotation("Relational:ColumnName", "kind");
var note = runtimeEntityType.AddProperty(
"Note",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("Note", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<Note>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
note.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
note.AddAnnotation("Relational:ColumnName", "note");
var policyRef = runtimeEntityType.AddProperty(
"PolicyRef",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("PolicyRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<PolicyRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
policyRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyRef.AddAnnotation("Relational:ColumnName", "policy_ref");
var reasonCode = runtimeEntityType.AddProperty(
"ReasonCode",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("ReasonCode", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<ReasonCode>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
reasonCode.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reasonCode.AddAnnotation("Relational:ColumnName", "reason_code");
var revokeDsseHash = runtimeEntityType.AddProperty(
"RevokeDsseHash",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("RevokeDsseHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<RevokeDsseHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
revokeDsseHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
revokeDsseHash.AddAnnotation("Relational:ColumnName", "revoke_dsse_hash");
var revokeReason = runtimeEntityType.AddProperty(
"RevokeReason",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("RevokeReason", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<RevokeReason>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
revokeReason.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
revokeReason.AddAnnotation("Relational:ColumnName", "revoke_reason");
var revokeSignatureRef = runtimeEntityType.AddProperty(
"RevokeSignatureRef",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("RevokeSignatureRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<RevokeSignatureRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
revokeSignatureRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
revokeSignatureRef.AddAnnotation("Relational:ColumnName", "revoke_signature_ref");
var revokedAt = runtimeEntityType.AddProperty(
"RevokedAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageDecision).GetProperty("RevokedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<RevokedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
revokedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
revokedAt.AddAnnotation("Relational:ColumnName", "revoked_at");
var signatureRef = runtimeEntityType.AddProperty(
"SignatureRef",
typeof(string),
propertyInfo: typeof(TriageDecision).GetProperty("SignatureRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<SignatureRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
signatureRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signatureRef.AddAnnotation("Relational:ColumnName", "signature_ref");
var ttl = runtimeEntityType.AddProperty(
"Ttl",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageDecision).GetProperty("Ttl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<Ttl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
ttl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ttl.AddAnnotation("Relational:ColumnName", "ttl");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId });
index.AddAnnotation("Relational:Filter", "revoked_at IS NULL");
index.AddAnnotation("Relational:Name", "ix_triage_decision_active");
var index0 = runtimeEntityType.AddIndex(
new[] { findingId, createdAt });
index0.AddAnnotation("Relational:Name", "ix_triage_decision_finding");
var index1 = runtimeEntityType.AddIndex(
new[] { kind, createdAt });
index1.AddAnnotation("Relational:Name", "ix_triage_decision_kind");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageDecision).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageDecision).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var decisions = principalEntityType.AddNavigation("Decisions",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageDecision>),
propertyInfo: typeof(TriageFinding).GetProperty("Decisions", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Decisions>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_decision");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,190 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageEffectiveVexEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageEffectiveVex",
typeof(TriageEffectiveVex),
baseEntityType,
propertyCount: 12,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 1,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var collectedAt = runtimeEntityType.AddProperty(
"CollectedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("CollectedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<CollectedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
collectedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
collectedAt.AddAnnotation("Relational:ColumnName", "collected_at");
var dsseEnvelopeHash = runtimeEntityType.AddProperty(
"DsseEnvelopeHash",
typeof(string),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("DsseEnvelopeHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<DsseEnvelopeHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
dsseEnvelopeHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
dsseEnvelopeHash.AddAnnotation("Relational:ColumnName", "dsse_envelope_hash");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var issuer = runtimeEntityType.AddProperty(
"Issuer",
typeof(string),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("Issuer", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<Issuer>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
issuer.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
issuer.AddAnnotation("Relational:ColumnName", "issuer");
var prunedSourcesJson = runtimeEntityType.AddProperty(
"PrunedSourcesJson",
typeof(string),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("PrunedSourcesJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<PrunedSourcesJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
prunedSourcesJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
prunedSourcesJson.AddAnnotation("Relational:ColumnName", "pruned_sources");
prunedSourcesJson.AddAnnotation("Relational:ColumnType", "jsonb");
var signatureRef = runtimeEntityType.AddProperty(
"SignatureRef",
typeof(string),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("SignatureRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<SignatureRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
signatureRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signatureRef.AddAnnotation("Relational:ColumnName", "signature_ref");
var sourceDomain = runtimeEntityType.AddProperty(
"SourceDomain",
typeof(string),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("SourceDomain", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<SourceDomain>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sourceDomain.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sourceDomain.AddAnnotation("Relational:ColumnName", "source_domain");
var sourceRef = runtimeEntityType.AddProperty(
"SourceRef",
typeof(string),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("SourceRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<SourceRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sourceRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sourceRef.AddAnnotation("Relational:ColumnName", "source_ref");
var status = runtimeEntityType.AddProperty(
"Status",
typeof(TriageVexStatus),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("Status", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<Status>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageVexStatus.Affected);
status.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
status.AddAnnotation("Relational:ColumnName", "status");
var validFrom = runtimeEntityType.AddProperty(
"ValidFrom",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("ValidFrom", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<ValidFrom>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
validFrom.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
validFrom.AddAnnotation("Relational:ColumnName", "valid_from");
var validTo = runtimeEntityType.AddProperty(
"ValidTo",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("ValidTo", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<ValidTo>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
validTo.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
validTo.AddAnnotation("Relational:ColumnName", "valid_to");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId, collectedAt });
index.AddAnnotation("Relational:Name", "ix_triage_effective_vex_finding");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageEffectiveVex).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEffectiveVex).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var effectiveVexRecords = principalEntityType.AddNavigation("EffectiveVexRecords",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageEffectiveVex>),
propertyInfo: typeof(TriageFinding).GetProperty("EffectiveVexRecords", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<EffectiveVexRecords>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_effective_vex");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,215 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageEvidenceArtifactEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageEvidenceArtifact",
typeof(TriageEvidenceArtifact),
baseEntityType,
propertyCount: 14,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var contentHash = runtimeEntityType.AddProperty(
"ContentHash",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("ContentHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<ContentHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
contentHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
contentHash.AddAnnotation("Relational:ColumnName", "content_hash");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAt.AddAnnotation("Relational:ColumnName", "created_at");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var issuer = runtimeEntityType.AddProperty(
"Issuer",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Issuer", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Issuer>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
issuer.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
issuer.AddAnnotation("Relational:ColumnName", "issuer");
var mediaType = runtimeEntityType.AddProperty(
"MediaType",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("MediaType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<MediaType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
mediaType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
mediaType.AddAnnotation("Relational:ColumnName", "media_type");
var metadataJson = runtimeEntityType.AddProperty(
"MetadataJson",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("MetadataJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<MetadataJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
metadataJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
metadataJson.AddAnnotation("Relational:ColumnName", "metadata");
metadataJson.AddAnnotation("Relational:ColumnType", "jsonb");
var signatureRef = runtimeEntityType.AddProperty(
"SignatureRef",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("SignatureRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<SignatureRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
signatureRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signatureRef.AddAnnotation("Relational:ColumnName", "signature_ref");
var signed = runtimeEntityType.AddProperty(
"Signed",
typeof(bool),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Signed", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Signed>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
signed.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signed.AddAnnotation("Relational:ColumnName", "signed");
var signedBy = runtimeEntityType.AddProperty(
"SignedBy",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("SignedBy", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<SignedBy>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
signedBy.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signedBy.AddAnnotation("Relational:ColumnName", "signed_by");
var sizeBytes = runtimeEntityType.AddProperty(
"SizeBytes",
typeof(long?),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("SizeBytes", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<SizeBytes>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
sizeBytes.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sizeBytes.AddAnnotation("Relational:ColumnName", "size_bytes");
var title = runtimeEntityType.AddProperty(
"Title",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Title", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Title>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
title.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
title.AddAnnotation("Relational:ColumnName", "title");
var type = runtimeEntityType.AddProperty(
"Type",
typeof(TriageEvidenceType),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Type", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Type>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageEvidenceType.SbomSlice);
type.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
type.AddAnnotation("Relational:ColumnName", "type");
var uri = runtimeEntityType.AddProperty(
"Uri",
typeof(string),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Uri", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Uri>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
uri.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
uri.AddAnnotation("Relational:ColumnName", "uri");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId, createdAt });
index.AddAnnotation("Relational:Name", "ix_triage_evidence_finding");
var index0 = runtimeEntityType.AddIndex(
new[] { type, createdAt });
index0.AddAnnotation("Relational:Name", "ix_triage_evidence_type");
var index1 = runtimeEntityType.AddIndex(
new[] { findingId, type, contentHash },
unique: true);
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageEvidenceArtifact).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageEvidenceArtifact).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var evidenceArtifacts = principalEntityType.AddNavigation("EvidenceArtifacts",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageEvidenceArtifact>),
propertyInfo: typeof(TriageFinding).GetProperty("EvidenceArtifacts", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<EvidenceArtifacts>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_evidence_artifact");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,280 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageFindingEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageFinding",
typeof(TriageFinding),
baseEntityType,
propertyCount: 20,
navigationCount: 9,
foreignKeyCount: 1,
unnamedIndexCount: 7,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageFinding).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var artifactDigest = runtimeEntityType.AddProperty(
"ArtifactDigest",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("ArtifactDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<ArtifactDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
artifactDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
artifactDigest.AddAnnotation("Relational:ColumnName", "artifact_digest");
var assetId = runtimeEntityType.AddProperty(
"AssetId",
typeof(Guid),
propertyInfo: typeof(TriageFinding).GetProperty("AssetId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<AssetId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
assetId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
assetId.AddAnnotation("Relational:ColumnName", "asset_id");
var assetLabel = runtimeEntityType.AddProperty(
"AssetLabel",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("AssetLabel", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<AssetLabel>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
assetLabel.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
assetLabel.AddAnnotation("Relational:ColumnName", "asset_label");
var cveId = runtimeEntityType.AddProperty(
"CveId",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("CveId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<CveId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
cveId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
cveId.AddAnnotation("Relational:ColumnName", "cve_id");
var deltaComparisonId = runtimeEntityType.AddProperty(
"DeltaComparisonId",
typeof(Guid?),
propertyInfo: typeof(TriageFinding).GetProperty("DeltaComparisonId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<DeltaComparisonId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
deltaComparisonId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
deltaComparisonId.AddAnnotation("Relational:ColumnName", "delta_comparison_id");
var environmentId = runtimeEntityType.AddProperty(
"EnvironmentId",
typeof(Guid?),
propertyInfo: typeof(TriageFinding).GetProperty("EnvironmentId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<EnvironmentId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
environmentId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
environmentId.AddAnnotation("Relational:ColumnName", "environment_id");
var firstSeenAt = runtimeEntityType.AddProperty(
"FirstSeenAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageFinding).GetProperty("FirstSeenAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<FirstSeenAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
firstSeenAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
firstSeenAt.AddAnnotation("Relational:ColumnName", "first_seen_at");
var fixedInVersion = runtimeEntityType.AddProperty(
"FixedInVersion",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("FixedInVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<FixedInVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
fixedInVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
fixedInVersion.AddAnnotation("Relational:ColumnName", "fixed_in_version");
var isBackportFixed = runtimeEntityType.AddProperty(
"IsBackportFixed",
typeof(bool),
propertyInfo: typeof(TriageFinding).GetProperty("IsBackportFixed", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<IsBackportFixed>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
isBackportFixed.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isBackportFixed.AddAnnotation("Relational:ColumnName", "is_backport_fixed");
var isMuted = runtimeEntityType.AddProperty(
"IsMuted",
typeof(bool),
propertyInfo: typeof(TriageFinding).GetProperty("IsMuted", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<IsMuted>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
isMuted.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isMuted.AddAnnotation("Relational:ColumnName", "is_muted");
var knowledgeSnapshotId = runtimeEntityType.AddProperty(
"KnowledgeSnapshotId",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("KnowledgeSnapshotId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<KnowledgeSnapshotId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
knowledgeSnapshotId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
knowledgeSnapshotId.AddAnnotation("Relational:ColumnName", "knowledge_snapshot_id");
var lastSeenAt = runtimeEntityType.AddProperty(
"LastSeenAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageFinding).GetProperty("LastSeenAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<LastSeenAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
lastSeenAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
lastSeenAt.AddAnnotation("Relational:ColumnName", "last_seen_at");
var purl = runtimeEntityType.AddProperty(
"Purl",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("Purl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Purl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
purl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
purl.AddAnnotation("Relational:ColumnName", "purl");
var ruleId = runtimeEntityType.AddProperty(
"RuleId",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("RuleId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<RuleId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
ruleId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ruleId.AddAnnotation("Relational:ColumnName", "rule_id");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(Guid?),
propertyInfo: typeof(TriageFinding).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var status = runtimeEntityType.AddProperty(
"Status",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("Status", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Status>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
status.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
status.AddAnnotation("Relational:ColumnName", "status");
var supersededBy = runtimeEntityType.AddProperty(
"SupersededBy",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("SupersededBy", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<SupersededBy>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
supersededBy.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
supersededBy.AddAnnotation("Relational:ColumnName", "superseded_by");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(string),
propertyInfo: typeof(TriageFinding).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var updatedAt = runtimeEntityType.AddProperty(
"UpdatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageFinding).GetProperty("UpdatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<UpdatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
updatedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
updatedAt.AddAnnotation("Relational:ColumnName", "updated_at");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { assetLabel });
index.AddAnnotation("Relational:Name", "ix_triage_finding_asset_label");
var index0 = runtimeEntityType.AddIndex(
new[] { cveId });
index0.AddAnnotation("Relational:Name", "ix_triage_finding_cve");
var index1 = runtimeEntityType.AddIndex(
new[] { lastSeenAt });
index1.AddAnnotation("Relational:Name", "ix_triage_finding_last_seen");
var index2 = runtimeEntityType.AddIndex(
new[] { purl });
index2.AddAnnotation("Relational:Name", "ix_triage_finding_purl");
var index3 = runtimeEntityType.AddIndex(
new[] { scanId });
var index4 = runtimeEntityType.AddIndex(
new[] { tenantId });
index4.AddAnnotation("Relational:Name", "ix_triage_finding_tenant_id");
var index5 = runtimeEntityType.AddIndex(
new[] { tenantId, assetId, environmentId, purl, cveId, ruleId },
unique: true);
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("ScanId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType);
var scan = declaringEntityType.AddNavigation("Scan",
runtimeForeignKey,
onDependent: true,
typeof(TriageScan),
propertyInfo: typeof(TriageFinding).GetProperty("Scan", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Scan>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var findings = principalEntityType.AddNavigation("Findings",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageFinding>),
propertyInfo: typeof(TriageScan).GetProperty("Findings", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<Findings>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_finding");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,134 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriagePolicyDecisionEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriagePolicyDecision",
typeof(TriagePolicyDecision),
baseEntityType,
propertyCount: 6,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 1,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var action = runtimeEntityType.AddProperty(
"Action",
typeof(string),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("Action", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<Action>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
action.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
action.AddAnnotation("Relational:ColumnName", "action");
var appliedAt = runtimeEntityType.AddProperty(
"AppliedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("AppliedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<AppliedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
appliedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
appliedAt.AddAnnotation("Relational:ColumnName", "applied_at");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var policyId = runtimeEntityType.AddProperty(
"PolicyId",
typeof(string),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("PolicyId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<PolicyId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
policyId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyId.AddAnnotation("Relational:ColumnName", "policy_id");
var reason = runtimeEntityType.AddProperty(
"Reason",
typeof(string),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("Reason", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<Reason>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reason.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reason.AddAnnotation("Relational:ColumnName", "reason");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId });
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriagePolicyDecision).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriagePolicyDecision).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var policyDecisions = principalEntityType.AddNavigation("PolicyDecisions",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriagePolicyDecision>),
propertyInfo: typeof(TriageFinding).GetProperty("PolicyDecisions", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<PolicyDecisions>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_policy_decision");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,163 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageReachabilityResultEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageReachabilityResult",
typeof(TriageReachabilityResult),
baseEntityType,
propertyCount: 9,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 1,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var computedAt = runtimeEntityType.AddProperty(
"ComputedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("ComputedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<ComputedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
computedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
computedAt.AddAnnotation("Relational:ColumnName", "computed_at");
var confidence = runtimeEntityType.AddProperty(
"Confidence",
typeof(short),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("Confidence", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<Confidence>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: (short)0);
confidence.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
confidence.AddAnnotation("Relational:ColumnName", "confidence");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var inputsHash = runtimeEntityType.AddProperty(
"InputsHash",
typeof(string),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("InputsHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<InputsHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
inputsHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
inputsHash.AddAnnotation("Relational:ColumnName", "inputs_hash");
var reachable = runtimeEntityType.AddProperty(
"Reachable",
typeof(TriageReachability),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("Reachable", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<Reachable>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageReachability.Yes);
reachable.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reachable.AddAnnotation("Relational:ColumnName", "reachable");
var runtimeProofRef = runtimeEntityType.AddProperty(
"RuntimeProofRef",
typeof(string),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("RuntimeProofRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<RuntimeProofRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
runtimeProofRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
runtimeProofRef.AddAnnotation("Relational:ColumnName", "runtime_proof_ref");
var staticProofRef = runtimeEntityType.AddProperty(
"StaticProofRef",
typeof(string),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("StaticProofRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<StaticProofRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
staticProofRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
staticProofRef.AddAnnotation("Relational:ColumnName", "static_proof_ref");
var subgraphId = runtimeEntityType.AddProperty(
"SubgraphId",
typeof(string),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("SubgraphId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<SubgraphId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
subgraphId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
subgraphId.AddAnnotation("Relational:ColumnName", "subgraph_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId, computedAt });
index.AddAnnotation("Relational:Name", "ix_triage_reachability_finding");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageReachabilityResult).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageReachabilityResult).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var reachabilityResults = principalEntityType.AddNavigation("ReachabilityResults",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageReachabilityResult>),
propertyInfo: typeof(TriageFinding).GetProperty("ReachabilityResults", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<ReachabilityResults>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_reachability_result");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,187 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageRiskResultEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageRiskResult",
typeof(TriageRiskResult),
baseEntityType,
propertyCount: 11,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageRiskResult).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var computedAt = runtimeEntityType.AddProperty(
"ComputedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageRiskResult).GetProperty("ComputedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<ComputedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
computedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
computedAt.AddAnnotation("Relational:ColumnName", "computed_at");
var explanationJson = runtimeEntityType.AddProperty(
"ExplanationJson",
typeof(string),
propertyInfo: typeof(TriageRiskResult).GetProperty("ExplanationJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<ExplanationJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
explanationJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
explanationJson.AddAnnotation("Relational:ColumnName", "explanation");
explanationJson.AddAnnotation("Relational:ColumnType", "jsonb");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageRiskResult).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var inputsHash = runtimeEntityType.AddProperty(
"InputsHash",
typeof(string),
propertyInfo: typeof(TriageRiskResult).GetProperty("InputsHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<InputsHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
inputsHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
inputsHash.AddAnnotation("Relational:ColumnName", "inputs_hash");
var lane = runtimeEntityType.AddProperty(
"Lane",
typeof(TriageLane),
propertyInfo: typeof(TriageRiskResult).GetProperty("Lane", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<Lane>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageLane.Active);
lane.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
lane.AddAnnotation("Relational:ColumnName", "lane");
var policyId = runtimeEntityType.AddProperty(
"PolicyId",
typeof(string),
propertyInfo: typeof(TriageRiskResult).GetProperty("PolicyId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<PolicyId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
policyId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyId.AddAnnotation("Relational:ColumnName", "policy_id");
var policyVersion = runtimeEntityType.AddProperty(
"PolicyVersion",
typeof(string),
propertyInfo: typeof(TriageRiskResult).GetProperty("PolicyVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<PolicyVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
policyVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyVersion.AddAnnotation("Relational:ColumnName", "policy_version");
var score = runtimeEntityType.AddProperty(
"Score",
typeof(int),
propertyInfo: typeof(TriageRiskResult).GetProperty("Score", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<Score>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
score.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
score.AddAnnotation("Relational:ColumnName", "score");
var verdict = runtimeEntityType.AddProperty(
"Verdict",
typeof(TriageVerdict),
propertyInfo: typeof(TriageRiskResult).GetProperty("Verdict", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<Verdict>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageVerdict.Ship);
verdict.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
verdict.AddAnnotation("Relational:ColumnName", "verdict");
var why = runtimeEntityType.AddProperty(
"Why",
typeof(string),
propertyInfo: typeof(TriageRiskResult).GetProperty("Why", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<Why>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
why.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
why.AddAnnotation("Relational:ColumnName", "why");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId, computedAt });
index.AddAnnotation("Relational:Name", "ix_triage_risk_finding");
var index0 = runtimeEntityType.AddIndex(
new[] { lane, computedAt });
index0.AddAnnotation("Relational:Name", "ix_triage_risk_lane");
var index1 = runtimeEntityType.AddIndex(
new[] { findingId, policyId, policyVersion, inputsHash },
unique: true);
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageRiskResult).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageRiskResult).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var riskResults = principalEntityType.AddNavigation("RiskResults",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageRiskResult>),
propertyInfo: typeof(TriageFinding).GetProperty("RiskResults", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<RiskResults>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_risk_result");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,211 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageScanEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageScan",
typeof(TriageScan),
baseEntityType,
propertyCount: 18,
navigationCount: 1,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageScan).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var completedAt = runtimeEntityType.AddProperty(
"CompletedAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageScan).GetProperty("CompletedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<CompletedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
completedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
completedAt.AddAnnotation("Relational:ColumnName", "completed_at");
var feedSnapshotAt = runtimeEntityType.AddProperty(
"FeedSnapshotAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageScan).GetProperty("FeedSnapshotAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<FeedSnapshotAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
feedSnapshotAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
feedSnapshotAt.AddAnnotation("Relational:ColumnName", "feed_snapshot_at");
var feedSnapshotHash = runtimeEntityType.AddProperty(
"FeedSnapshotHash",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("FeedSnapshotHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<FeedSnapshotHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
feedSnapshotHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
feedSnapshotHash.AddAnnotation("Relational:ColumnName", "feed_snapshot_hash");
var feedVersions = runtimeEntityType.AddProperty(
"FeedVersions",
typeof(Dictionary<string, string>),
propertyInfo: typeof(TriageScan).GetProperty("FeedVersions", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<FeedVersions>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
feedVersions.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
feedVersions.AddAnnotation("Relational:ColumnName", "feed_versions");
feedVersions.AddAnnotation("Relational:ColumnType", "jsonb");
var finalDigest = runtimeEntityType.AddProperty(
"FinalDigest",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("FinalDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<FinalDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
finalDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
finalDigest.AddAnnotation("Relational:ColumnName", "final_digest");
var imageDigest = runtimeEntityType.AddProperty(
"ImageDigest",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("ImageDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<ImageDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
imageDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
imageDigest.AddAnnotation("Relational:ColumnName", "image_digest");
var imageReference = runtimeEntityType.AddProperty(
"ImageReference",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("ImageReference", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<ImageReference>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
imageReference.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
imageReference.AddAnnotation("Relational:ColumnName", "image_reference");
var knowledgeSnapshotId = runtimeEntityType.AddProperty(
"KnowledgeSnapshotId",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("KnowledgeSnapshotId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<KnowledgeSnapshotId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
knowledgeSnapshotId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
knowledgeSnapshotId.AddAnnotation("Relational:ColumnName", "knowledge_snapshot_id");
var offlineBundleId = runtimeEntityType.AddProperty(
"OfflineBundleId",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("OfflineBundleId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<OfflineBundleId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
offlineBundleId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
offlineBundleId.AddAnnotation("Relational:ColumnName", "offline_bundle_id");
var policyHash = runtimeEntityType.AddProperty(
"PolicyHash",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("PolicyHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<PolicyHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
policyHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyHash.AddAnnotation("Relational:ColumnName", "policy_hash");
var snapshotContentHash = runtimeEntityType.AddProperty(
"SnapshotContentHash",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("SnapshotContentHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<SnapshotContentHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
snapshotContentHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
snapshotContentHash.AddAnnotation("Relational:ColumnName", "snapshot_content_hash");
var snapshotCreatedAt = runtimeEntityType.AddProperty(
"SnapshotCreatedAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(TriageScan).GetProperty("SnapshotCreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<SnapshotCreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
snapshotCreatedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
snapshotCreatedAt.AddAnnotation("Relational:ColumnName", "snapshot_created_at");
var startedAt = runtimeEntityType.AddProperty(
"StartedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageScan).GetProperty("StartedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<StartedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
startedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
startedAt.AddAnnotation("Relational:ColumnName", "started_at");
var status = runtimeEntityType.AddProperty(
"Status",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("Status", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<Status>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
status.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
status.AddAnnotation("Relational:ColumnName", "status");
var targetDigest = runtimeEntityType.AddProperty(
"TargetDigest",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("TargetDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<TargetDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
targetDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
targetDigest.AddAnnotation("Relational:ColumnName", "target_digest");
var targetReference = runtimeEntityType.AddProperty(
"TargetReference",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("TargetReference", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<TargetReference>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
targetReference.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
targetReference.AddAnnotation("Relational:ColumnName", "target_reference");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(string),
propertyInfo: typeof(TriageScan).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageScan).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_scan");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,162 @@
// <auto-generated />
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Triage.Entities;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Triage.CompiledModels
{
[EntityFrameworkInternal]
public partial class TriageSnapshotEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Triage.Entities.TriageSnapshot",
typeof(TriageSnapshot),
baseEntityType,
propertyCount: 8,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(TriageSnapshot).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<Id>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
id.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
id.AddAnnotation("Relational:ColumnName", "id");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(TriageSnapshot).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAt.AddAnnotation("Relational:ColumnName", "created_at");
var diffJson = runtimeEntityType.AddProperty(
"DiffJson",
typeof(string),
propertyInfo: typeof(TriageSnapshot).GetProperty("DiffJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<DiffJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
diffJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
diffJson.AddAnnotation("Relational:ColumnName", "diff_json");
diffJson.AddAnnotation("Relational:ColumnType", "jsonb");
var findingId = runtimeEntityType.AddProperty(
"FindingId",
typeof(Guid),
propertyInfo: typeof(TriageSnapshot).GetProperty("FindingId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<FindingId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
findingId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingId.AddAnnotation("Relational:ColumnName", "finding_id");
var fromInputsHash = runtimeEntityType.AddProperty(
"FromInputsHash",
typeof(string),
propertyInfo: typeof(TriageSnapshot).GetProperty("FromInputsHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<FromInputsHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
fromInputsHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
fromInputsHash.AddAnnotation("Relational:ColumnName", "from_inputs_hash");
var summary = runtimeEntityType.AddProperty(
"Summary",
typeof(string),
propertyInfo: typeof(TriageSnapshot).GetProperty("Summary", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<Summary>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
summary.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
summary.AddAnnotation("Relational:ColumnName", "summary");
var toInputsHash = runtimeEntityType.AddProperty(
"ToInputsHash",
typeof(string),
propertyInfo: typeof(TriageSnapshot).GetProperty("ToInputsHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<ToInputsHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
toInputsHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
toInputsHash.AddAnnotation("Relational:ColumnName", "to_inputs_hash");
var trigger = runtimeEntityType.AddProperty(
"Trigger",
typeof(TriageSnapshotTrigger),
propertyInfo: typeof(TriageSnapshot).GetProperty("Trigger", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<Trigger>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: TriageSnapshotTrigger.FeedUpdate);
trigger.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
trigger.AddAnnotation("Relational:ColumnName", "trigger");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { findingId, createdAt });
index.AddAnnotation("Relational:Name", "ix_triage_snapshot_finding");
var index0 = runtimeEntityType.AddIndex(
new[] { trigger, createdAt });
index0.AddAnnotation("Relational:Name", "ix_triage_snapshot_trigger");
var index1 = runtimeEntityType.AddIndex(
new[] { findingId, toInputsHash, createdAt },
unique: true);
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FindingId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var finding = declaringEntityType.AddNavigation("Finding",
runtimeForeignKey,
onDependent: true,
typeof(TriageFinding),
propertyInfo: typeof(TriageSnapshot).GetProperty("Finding", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageSnapshot).GetField("<Finding>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var snapshots = principalEntityType.AddNavigation("Snapshots",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<TriageSnapshot>),
propertyInfo: typeof(TriageFinding).GetProperty("Snapshots", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(TriageFinding).GetField("<Snapshots>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
return runtimeForeignKey;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", null);
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "triage_snapshot");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,7 @@
-- Triage: add subgraph_id column to triage_reachability_result
-- This column stores the content-addressed ID of the reachability subgraph
-- for a finding, allowing callgraph slice reuse across scans.
-- Added to match TriageReachabilityResult EF Core entity definition.
ALTER TABLE triage_reachability_result
ADD COLUMN IF NOT EXISTS subgraph_id TEXT NULL;

View File

@@ -11,6 +11,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" PrivateAssets="all" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" />
@@ -19,4 +20,8 @@
<!-- Embed SQL migrations as resources for PostgresIntegrationFixture -->
<EmbeddedResource Include="Migrations/**/*.sql" />
</ItemGroup>
<ItemGroup>
<!-- Prevent automatic compiled-model binding so non-default schemas can build runtime models. -->
<Compile Remove="CompiledModels\TriageDbContextAssemblyAttributes.cs" />
</ItemGroup>
</Project>

View File

@@ -6,14 +6,19 @@ namespace StellaOps.Scanner.Triage;
/// <summary>
/// Entity Framework Core DbContext for the Triage schema.
/// </summary>
public sealed class TriageDbContext : DbContext
public partial class TriageDbContext : DbContext
{
public const string DefaultSchemaName = "scanner";
private readonly string _schemaName;
/// <summary>
/// Initializes a new instance of the <see cref="TriageDbContext"/> class.
/// </summary>
public TriageDbContext(DbContextOptions<TriageDbContext> options)
public TriageDbContext(DbContextOptions<TriageDbContext> options, string? schemaName = null)
: base(options)
{
_schemaName = string.IsNullOrWhiteSpace(schemaName) ? DefaultSchemaName : schemaName.Trim();
}
/// <summary>
@@ -242,5 +247,9 @@ public sealed class TriageDbContext : DbContext
entity.ToView("v_triage_case_current");
entity.HasNoKey();
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

View File

@@ -0,0 +1,39 @@
using Microsoft.EntityFrameworkCore;
using Npgsql;
using StellaOps.Scanner.Triage.CompiledModels;
namespace StellaOps.Scanner.Triage;
/// <summary>
/// Runtime factory for creating <see cref="TriageDbContext"/> instances.
/// Uses compiled model for default schema to avoid runtime model-building overhead.
/// </summary>
internal static class TriageDbContextFactory
{
public static TriageDbContext Create(NpgsqlConnection connection, int commandTimeoutSeconds, string schemaName)
{
var normalizedSchema = string.IsNullOrWhiteSpace(schemaName)
? TriageDbContext.DefaultSchemaName
: schemaName.Trim();
var optionsBuilder = new DbContextOptionsBuilder<TriageDbContext>()
.UseNpgsql(connection, npgsql =>
{
npgsql.CommandTimeout(commandTimeoutSeconds);
npgsql.MapEnum<Entities.TriageLane>("triage_lane");
npgsql.MapEnum<Entities.TriageVerdict>("triage_verdict");
npgsql.MapEnum<Entities.TriageReachability>("triage_reachability");
npgsql.MapEnum<Entities.TriageVexStatus>("triage_vex_status");
npgsql.MapEnum<Entities.TriageDecisionKind>("triage_decision_kind");
npgsql.MapEnum<Entities.TriageSnapshotTrigger>("triage_snapshot_trigger");
npgsql.MapEnum<Entities.TriageEvidenceType>("triage_evidence_type");
});
if (string.Equals(normalizedSchema, TriageDbContext.DefaultSchemaName, StringComparison.Ordinal))
{
optionsBuilder.UseModel(TriageDbContextModel.Instance);
}
return new TriageDbContext(optionsBuilder.Options, normalizedSchema);
}
}

View File

@@ -0,0 +1,41 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace StellaOps.Scanner.Triage;
/// <summary>
/// Design-time DbContext factory for dotnet ef CLI tooling.
/// Used by scaffold and optimize commands.
/// </summary>
public sealed class TriageDesignTimeDbContextFactory : IDesignTimeDbContextFactory<TriageDbContext>
{
private const string DefaultConnectionString =
"Host=localhost;Port=55433;Database=postgres;Username=postgres;Password=postgres;Search Path=scanner,public";
private const string ConnectionStringEnvironmentVariable = "STELLAOPS_TRIAGE_EF_CONNECTION";
public TriageDbContext CreateDbContext(string[] args)
{
var connectionString = ResolveConnectionString();
var options = new DbContextOptionsBuilder<TriageDbContext>()
.UseNpgsql(connectionString, npgsql =>
{
npgsql.MapEnum<Entities.TriageLane>("triage_lane");
npgsql.MapEnum<Entities.TriageVerdict>("triage_verdict");
npgsql.MapEnum<Entities.TriageReachability>("triage_reachability");
npgsql.MapEnum<Entities.TriageVexStatus>("triage_vex_status");
npgsql.MapEnum<Entities.TriageDecisionKind>("triage_decision_kind");
npgsql.MapEnum<Entities.TriageSnapshotTrigger>("triage_snapshot_trigger");
npgsql.MapEnum<Entities.TriageEvidenceType>("triage_evidence_type");
})
.Options;
return new TriageDbContext(options);
}
private static string ResolveConnectionString()
{
var fromEnvironment = Environment.GetEnvironmentVariable(ConnectionStringEnvironmentVariable);
return string.IsNullOrWhiteSpace(fromEnvironment) ? DefaultConnectionString : fromEnvironment;
}
}