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,166 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class ArtifactBomEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.ArtifactBomEntity",
typeof(ArtifactBomEntity),
baseEntityType,
propertyCount: 13,
keyCount: 1);
var buildId = runtimeEntityType.AddProperty(
"BuildId",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("BuildId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<BuildId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
afterSaveBehavior: PropertySaveBehavior.Throw);
buildId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
buildId.AddAnnotation("Relational:ColumnName", "build_id");
var insertedAt = runtimeEntityType.AddProperty(
"InsertedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("InsertedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<InsertedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
insertedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
insertedAt.AddAnnotation("Relational:ColumnName", "inserted_at");
var attestationsJson = runtimeEntityType.AddProperty(
"AttestationsJson",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("AttestationsJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<AttestationsJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
attestationsJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
attestationsJson.AddAnnotation("Relational:ColumnName", "attestations");
attestationsJson.AddAnnotation("Relational:ColumnType", "jsonb");
var canonicalBomJson = runtimeEntityType.AddProperty(
"CanonicalBomJson",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("CanonicalBomJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<CanonicalBomJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
canonicalBomJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
canonicalBomJson.AddAnnotation("Relational:ColumnName", "canonical_bom");
canonicalBomJson.AddAnnotation("Relational:ColumnType", "jsonb");
var canonicalBomRef = runtimeEntityType.AddProperty(
"CanonicalBomRef",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("CanonicalBomRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<CanonicalBomRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
canonicalBomRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
canonicalBomRef.AddAnnotation("Relational:ColumnName", "canonical_bom_ref");
var canonicalBomSha256 = runtimeEntityType.AddProperty(
"CanonicalBomSha256",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("CanonicalBomSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<CanonicalBomSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
canonicalBomSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
canonicalBomSha256.AddAnnotation("Relational:ColumnName", "canonical_bom_sha256");
var dsseEnvelopeRef = runtimeEntityType.AddProperty(
"DsseEnvelopeRef",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("DsseEnvelopeRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<DsseEnvelopeRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
dsseEnvelopeRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
dsseEnvelopeRef.AddAnnotation("Relational:ColumnName", "dsse_envelope_ref");
var evidenceScore = runtimeEntityType.AddProperty(
"EvidenceScore",
typeof(double?),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("EvidenceScore", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<EvidenceScore>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
evidenceScore.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
evidenceScore.AddAnnotation("Relational:ColumnName", "evidence_score");
var mergedVexJson = runtimeEntityType.AddProperty(
"MergedVexJson",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("MergedVexJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<MergedVexJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
mergedVexJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
mergedVexJson.AddAnnotation("Relational:ColumnName", "merged_vex");
mergedVexJson.AddAnnotation("Relational:ColumnType", "jsonb");
var mergedVexRef = runtimeEntityType.AddProperty(
"MergedVexRef",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("MergedVexRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<MergedVexRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
mergedVexRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
mergedVexRef.AddAnnotation("Relational:ColumnName", "merged_vex_ref");
var payloadDigest = runtimeEntityType.AddProperty(
"PayloadDigest",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("PayloadDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<PayloadDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
payloadDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
payloadDigest.AddAnnotation("Relational:ColumnName", "payload_digest");
var rawBomRef = runtimeEntityType.AddProperty(
"RawBomRef",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("RawBomRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<RawBomRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
rawBomRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rawBomRef.AddAnnotation("Relational:ColumnName", "raw_bom_ref");
var rekorTileId = runtimeEntityType.AddProperty(
"RekorTileId",
typeof(string),
propertyInfo: typeof(ArtifactBomEntity).GetProperty("RekorTileId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ArtifactBomEntity).GetField("<RekorTileId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
rekorTileId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rekorTileId.AddAnnotation("Relational:ColumnName", "rekor_tile_id");
var key = runtimeEntityType.AddKey(
new[] { buildId, insertedAt });
runtimeEntityType.SetPrimaryKey(key);
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "artifact_boms");
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.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class BinaryIdentityEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.BinaryIdentityEntity",
typeof(BinaryIdentityEntity),
baseEntityType,
propertyCount: 13,
navigationCount: 2,
unnamedIndexCount: 4,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var architecture = runtimeEntityType.AddProperty(
"Architecture",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("Architecture", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<Architecture>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 32);
architecture.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
architecture.AddAnnotation("Relational:ColumnName", "architecture");
var binaryFormat = runtimeEntityType.AddProperty(
"BinaryFormat",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("BinaryFormat", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<BinaryFormat>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 16);
binaryFormat.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
binaryFormat.AddAnnotation("Relational:ColumnName", "binary_format");
var buildId = runtimeEntityType.AddProperty(
"BuildId",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("BuildId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<BuildId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 128);
buildId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
buildId.AddAnnotation("Relational:ColumnName", "build_id");
var buildIdType = runtimeEntityType.AddProperty(
"BuildIdType",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("BuildIdType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<BuildIdType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 32);
buildIdType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
buildIdType.AddAnnotation("Relational:ColumnName", "build_id_type");
var createdAtUtc = runtimeEntityType.AddProperty(
"CreatedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("CreatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<CreatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAtUtc.AddAnnotation("Relational:ColumnName", "created_at_utc");
createdAtUtc.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var filePath = runtimeEntityType.AddProperty(
"FilePath",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("FilePath", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<FilePath>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 1024);
filePath.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
filePath.AddAnnotation("Relational:ColumnName", "file_path");
var fileSha256 = runtimeEntityType.AddProperty(
"FileSha256",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("FileSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<FileSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 64);
fileSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
fileSha256.AddAnnotation("Relational:ColumnName", "file_sha256");
var fileSize = runtimeEntityType.AddProperty(
"FileSize",
typeof(long),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("FileSize", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<FileSize>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0L);
fileSize.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
fileSize.AddAnnotation("Relational:ColumnName", "file_size");
var hasDebugInfo = runtimeEntityType.AddProperty(
"HasDebugInfo",
typeof(bool),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("HasDebugInfo", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<HasDebugInfo>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
hasDebugInfo.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
hasDebugInfo.AddAnnotation("Relational:ColumnName", "has_debug_info");
var isStripped = runtimeEntityType.AddProperty(
"IsStripped",
typeof(bool),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("IsStripped", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<IsStripped>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
isStripped.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isStripped.AddAnnotation("Relational:ColumnName", "is_stripped");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(Guid),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var textSha256 = runtimeEntityType.AddProperty(
"TextSha256",
typeof(string),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("TextSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<TextSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 64);
textSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
textSha256.AddAnnotation("Relational:ColumnName", "text_sha256");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { buildId });
index.AddAnnotation("Relational:Name", "idx_binary_identity_build_id");
var index0 = runtimeEntityType.AddIndex(
new[] { fileSha256 });
index0.AddAnnotation("Relational:Name", "idx_binary_identity_file_sha256");
var index1 = runtimeEntityType.AddIndex(
new[] { scanId });
index1.AddAnnotation("Relational:Name", "idx_binary_identity_scan_id");
var index2 = runtimeEntityType.AddIndex(
new[] { textSha256 });
index2.AddAnnotation("Relational:Name", "idx_binary_identity_text_sha256");
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", "binary_identity");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,169 @@
// <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.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class BinaryPackageMapEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.BinaryPackageMapEntity",
typeof(BinaryPackageMapEntity),
baseEntityType,
propertyCount: 8,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var binaryIdentityId = runtimeEntityType.AddProperty(
"BinaryIdentityId",
typeof(Guid),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("BinaryIdentityId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<BinaryIdentityId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
binaryIdentityId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
binaryIdentityId.AddAnnotation("Relational:ColumnName", "binary_identity_id");
var confidence = runtimeEntityType.AddProperty(
"Confidence",
typeof(decimal),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("Confidence", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<Confidence>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0m);
confidence.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
confidence.AddAnnotation("Relational:ColumnName", "confidence");
confidence.AddAnnotation("Relational:ColumnType", "numeric(3,2)");
var createdAtUtc = runtimeEntityType.AddProperty(
"CreatedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("CreatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<CreatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAtUtc.AddAnnotation("Relational:ColumnName", "created_at_utc");
createdAtUtc.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var evidenceJson = runtimeEntityType.AddProperty(
"EvidenceJson",
typeof(string),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("EvidenceJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<EvidenceJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
evidenceJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
evidenceJson.AddAnnotation("Relational:ColumnName", "evidence_json");
evidenceJson.AddAnnotation("Relational:ColumnType", "jsonb");
var matchSource = runtimeEntityType.AddProperty(
"MatchSource",
typeof(string),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("MatchSource", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<MatchSource>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 64);
matchSource.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
matchSource.AddAnnotation("Relational:ColumnName", "match_source");
var matchType = runtimeEntityType.AddProperty(
"MatchType",
typeof(string),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("MatchType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<MatchType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 32);
matchType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
matchType.AddAnnotation("Relational:ColumnName", "match_type");
var purl = runtimeEntityType.AddProperty(
"Purl",
typeof(string),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("Purl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<Purl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 512);
purl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
purl.AddAnnotation("Relational:ColumnName", "purl");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { binaryIdentityId });
index.AddAnnotation("Relational:Name", "idx_binary_package_map_binary_id");
var index0 = runtimeEntityType.AddIndex(
new[] { purl });
index0.AddAnnotation("Relational:Name", "idx_binary_package_map_purl");
var index1 = runtimeEntityType.AddIndex(
new[] { binaryIdentityId, purl },
unique: true);
index1.AddAnnotation("Relational:Name", "uq_binary_package_map");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("BinaryIdentityId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var binaryIdentity = declaringEntityType.AddNavigation("BinaryIdentity",
runtimeForeignKey,
onDependent: true,
typeof(BinaryIdentityEntity),
propertyInfo: typeof(BinaryPackageMapEntity).GetProperty("BinaryIdentity", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryPackageMapEntity).GetField("<BinaryIdentity>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var packageMaps = principalEntityType.AddNavigation("PackageMaps",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<BinaryPackageMapEntity>),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("PackageMaps", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<PackageMaps>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", "binary_package_map");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,205 @@
// <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.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class BinaryVulnAssertionEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.BinaryVulnAssertionEntity",
typeof(BinaryVulnAssertionEntity),
baseEntityType,
propertyCount: 12,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var assertionType = runtimeEntityType.AddProperty(
"AssertionType",
typeof(string),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("AssertionType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<AssertionType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 32);
assertionType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
assertionType.AddAnnotation("Relational:ColumnName", "assertion_type");
var binaryIdentityId = runtimeEntityType.AddProperty(
"BinaryIdentityId",
typeof(Guid),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("BinaryIdentityId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<BinaryIdentityId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
binaryIdentityId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
binaryIdentityId.AddAnnotation("Relational:ColumnName", "binary_identity_id");
var confidence = runtimeEntityType.AddProperty(
"Confidence",
typeof(decimal),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("Confidence", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<Confidence>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0m);
confidence.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
confidence.AddAnnotation("Relational:ColumnName", "confidence");
confidence.AddAnnotation("Relational:ColumnType", "numeric(3,2)");
var createdAtUtc = runtimeEntityType.AddProperty(
"CreatedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("CreatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<CreatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAtUtc.AddAnnotation("Relational:ColumnName", "created_at_utc");
createdAtUtc.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var evidenceJson = runtimeEntityType.AddProperty(
"EvidenceJson",
typeof(string),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("EvidenceJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<EvidenceJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
evidenceJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
evidenceJson.AddAnnotation("Relational:ColumnName", "evidence_json");
evidenceJson.AddAnnotation("Relational:ColumnType", "jsonb");
var signatureRef = runtimeEntityType.AddProperty(
"SignatureRef",
typeof(string),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("SignatureRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<SignatureRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 256);
signatureRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signatureRef.AddAnnotation("Relational:ColumnName", "signature_ref");
var source = runtimeEntityType.AddProperty(
"Source",
typeof(string),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("Source", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<Source>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 64);
source.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
source.AddAnnotation("Relational:ColumnName", "source");
var status = runtimeEntityType.AddProperty(
"Status",
typeof(string),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("Status", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<Status>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 32);
status.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
status.AddAnnotation("Relational:ColumnName", "status");
var validFrom = runtimeEntityType.AddProperty(
"ValidFrom",
typeof(DateTimeOffset),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("ValidFrom", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).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 validUntil = runtimeEntityType.AddProperty(
"ValidUntil",
typeof(DateTimeOffset?),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("ValidUntil", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<ValidUntil>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
validUntil.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
validUntil.AddAnnotation("Relational:ColumnName", "valid_until");
var vulnId = runtimeEntityType.AddProperty(
"VulnId",
typeof(string),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("VulnId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<VulnId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 64);
vulnId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vulnId.AddAnnotation("Relational:ColumnName", "vuln_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { binaryIdentityId });
index.AddAnnotation("Relational:Name", "idx_binary_vuln_assertion_binary_id");
var index0 = runtimeEntityType.AddIndex(
new[] { status });
index0.AddAnnotation("Relational:Name", "idx_binary_vuln_assertion_status");
var index1 = runtimeEntityType.AddIndex(
new[] { vulnId });
index1.AddAnnotation("Relational:Name", "idx_binary_vuln_assertion_vuln_id");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("BinaryIdentityId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var binaryIdentity = declaringEntityType.AddNavigation("BinaryIdentity",
runtimeForeignKey,
onDependent: true,
typeof(BinaryIdentityEntity),
propertyInfo: typeof(BinaryVulnAssertionEntity).GetProperty("BinaryIdentity", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryVulnAssertionEntity).GetField("<BinaryIdentity>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var vulnAssertions = principalEntityType.AddNavigation("VulnAssertions",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<BinaryVulnAssertionEntity>),
propertyInfo: typeof(BinaryIdentityEntity).GetProperty("VulnAssertions", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(BinaryIdentityEntity).GetField("<VulnAssertions>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", "binary_vuln_assertion");
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.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class CallGraphSnapshotEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.CallGraphSnapshotEntity",
typeof(CallGraphSnapshotEntity),
baseEntityType,
propertyCount: 11,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var edgeCount = runtimeEntityType.AddProperty(
"EdgeCount",
typeof(int),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("EdgeCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<EdgeCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
edgeCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
edgeCount.AddAnnotation("Relational:ColumnName", "edge_count");
var entrypointCount = runtimeEntityType.AddProperty(
"EntrypointCount",
typeof(int),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("EntrypointCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<EntrypointCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
entrypointCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
entrypointCount.AddAnnotation("Relational:ColumnName", "entrypoint_count");
var extractedAt = runtimeEntityType.AddProperty(
"ExtractedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("ExtractedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<ExtractedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
extractedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
extractedAt.AddAnnotation("Relational:ColumnName", "extracted_at");
extractedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var graphDigest = runtimeEntityType.AddProperty(
"GraphDigest",
typeof(string),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("GraphDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<GraphDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
graphDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
graphDigest.AddAnnotation("Relational:ColumnName", "graph_digest");
var language = runtimeEntityType.AddProperty(
"Language",
typeof(string),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("Language", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<Language>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
language.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
language.AddAnnotation("Relational:ColumnName", "language");
var nodeCount = runtimeEntityType.AddProperty(
"NodeCount",
typeof(int),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("NodeCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<NodeCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
nodeCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
nodeCount.AddAnnotation("Relational:ColumnName", "node_count");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(string),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var sinkCount = runtimeEntityType.AddProperty(
"SinkCount",
typeof(int),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("SinkCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<SinkCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
sinkCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sinkCount.AddAnnotation("Relational:ColumnName", "sink_count");
var snapshotJson = runtimeEntityType.AddProperty(
"SnapshotJson",
typeof(string),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("SnapshotJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<SnapshotJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
snapshotJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
snapshotJson.AddAnnotation("Relational:ColumnName", "snapshot_json");
snapshotJson.AddAnnotation("Relational:ColumnType", "jsonb");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(CallGraphSnapshotEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CallGraphSnapshotEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { graphDigest });
index.AddAnnotation("Relational:Name", "idx_call_graph_snapshots_graph_digest");
var index0 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, language });
index0.AddAnnotation("Relational:Name", "idx_call_graph_snapshots_tenant_scan");
var index1 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, language, graphDigest },
unique: true);
index1.AddAnnotation("Relational:Name", "call_graph_snapshot_unique_per_scan");
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", "call_graph_snapshots");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,164 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class CodeChangeEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.CodeChangeEntity",
typeof(CodeChangeEntity),
baseEntityType,
propertyCount: 11,
unnamedIndexCount: 4,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(CodeChangeEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var baseScanId = runtimeEntityType.AddProperty(
"BaseScanId",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("BaseScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<BaseScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
baseScanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
baseScanId.AddAnnotation("Relational:ColumnName", "base_scan_id");
var changeKind = runtimeEntityType.AddProperty(
"ChangeKind",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("ChangeKind", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<ChangeKind>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
changeKind.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
changeKind.AddAnnotation("Relational:ColumnName", "change_kind");
var details = runtimeEntityType.AddProperty(
"Details",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("Details", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<Details>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
details.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
details.AddAnnotation("Relational:ColumnName", "details");
details.AddAnnotation("Relational:ColumnType", "jsonb");
var detectedAt = runtimeEntityType.AddProperty(
"DetectedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(CodeChangeEntity).GetProperty("DetectedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<DetectedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
detectedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
detectedAt.AddAnnotation("Relational:ColumnName", "detected_at");
detectedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var file = runtimeEntityType.AddProperty(
"File",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("File", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<File>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
file.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
file.AddAnnotation("Relational:ColumnName", "file");
var language = runtimeEntityType.AddProperty(
"Language",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("Language", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<Language>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
language.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
language.AddAnnotation("Relational:ColumnName", "language");
var nodeId = runtimeEntityType.AddProperty(
"NodeId",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("NodeId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<NodeId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
nodeId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
nodeId.AddAnnotation("Relational:ColumnName", "node_id");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var symbol = runtimeEntityType.AddProperty(
"Symbol",
typeof(string),
propertyInfo: typeof(CodeChangeEntity).GetProperty("Symbol", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<Symbol>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
symbol.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
symbol.AddAnnotation("Relational:ColumnName", "symbol");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(CodeChangeEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(CodeChangeEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { changeKind });
index.AddAnnotation("Relational:Name", "idx_code_changes_kind");
var index0 = runtimeEntityType.AddIndex(
new[] { symbol });
index0.AddAnnotation("Relational:Name", "idx_code_changes_symbol");
var index1 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, baseScanId, language });
index1.AddAnnotation("Relational:Name", "idx_code_changes_tenant_scan");
var index2 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, baseScanId, language, symbol, changeKind },
unique: true);
index2.AddAnnotation("Relational:Name", "code_changes_unique");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "code_changes");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,227 @@
// <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.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class DriftedSinkEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.DriftedSinkEntity",
typeof(DriftedSinkEntity),
baseEntityType,
propertyCount: 15,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 4,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var associatedVulns = runtimeEntityType.AddProperty(
"AssociatedVulns",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("AssociatedVulns", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<AssociatedVulns>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
associatedVulns.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
associatedVulns.AddAnnotation("Relational:ColumnName", "associated_vulns");
associatedVulns.AddAnnotation("Relational:ColumnType", "jsonb");
var causeDescription = runtimeEntityType.AddProperty(
"CauseDescription",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CauseDescription", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CauseDescription>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
causeDescription.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
causeDescription.AddAnnotation("Relational:ColumnName", "cause_description");
var causeFile = runtimeEntityType.AddProperty(
"CauseFile",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CauseFile", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CauseFile>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
causeFile.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
causeFile.AddAnnotation("Relational:ColumnName", "cause_file");
var causeKind = runtimeEntityType.AddProperty(
"CauseKind",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CauseKind", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CauseKind>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
causeKind.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
causeKind.AddAnnotation("Relational:ColumnName", "cause_kind");
var causeLine = runtimeEntityType.AddProperty(
"CauseLine",
typeof(int?),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CauseLine", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CauseLine>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
causeLine.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
causeLine.AddAnnotation("Relational:ColumnName", "cause_line");
var causeSymbol = runtimeEntityType.AddProperty(
"CauseSymbol",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CauseSymbol", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CauseSymbol>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
causeSymbol.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
causeSymbol.AddAnnotation("Relational:ColumnName", "cause_symbol");
var codeChangeId = runtimeEntityType.AddProperty(
"CodeChangeId",
typeof(Guid?),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CodeChangeId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CodeChangeId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
codeChangeId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
codeChangeId.AddAnnotation("Relational:ColumnName", "code_change_id");
var compressedPath = runtimeEntityType.AddProperty(
"CompressedPath",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("CompressedPath", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<CompressedPath>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
compressedPath.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
compressedPath.AddAnnotation("Relational:ColumnName", "compressed_path");
compressedPath.AddAnnotation("Relational:ColumnType", "jsonb");
var direction = runtimeEntityType.AddProperty(
"Direction",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("Direction", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<Direction>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
direction.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
direction.AddAnnotation("Relational:ColumnName", "direction");
var driftResultId = runtimeEntityType.AddProperty(
"DriftResultId",
typeof(Guid),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("DriftResultId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<DriftResultId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
driftResultId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
driftResultId.AddAnnotation("Relational:ColumnName", "drift_result_id");
var sinkCategory = runtimeEntityType.AddProperty(
"SinkCategory",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("SinkCategory", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<SinkCategory>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sinkCategory.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sinkCategory.AddAnnotation("Relational:ColumnName", "sink_category");
var sinkNodeId = runtimeEntityType.AddProperty(
"SinkNodeId",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("SinkNodeId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<SinkNodeId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sinkNodeId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sinkNodeId.AddAnnotation("Relational:ColumnName", "sink_node_id");
var symbol = runtimeEntityType.AddProperty(
"Symbol",
typeof(string),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("Symbol", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<Symbol>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
symbol.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
symbol.AddAnnotation("Relational:ColumnName", "symbol");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { direction });
index.AddAnnotation("Relational:Name", "idx_drifted_sinks_direction");
var index0 = runtimeEntityType.AddIndex(
new[] { driftResultId });
index0.AddAnnotation("Relational:Name", "idx_drifted_sinks_drift");
var index1 = runtimeEntityType.AddIndex(
new[] { sinkCategory });
index1.AddAnnotation("Relational:Name", "idx_drifted_sinks_category");
var index2 = runtimeEntityType.AddIndex(
new[] { driftResultId, sinkNodeId },
unique: true);
index2.AddAnnotation("Relational:Name", "drifted_sinks_unique");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("DriftResultId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var driftResult = declaringEntityType.AddNavigation("DriftResult",
runtimeForeignKey,
onDependent: true,
typeof(ReachabilityDriftResultEntity),
propertyInfo: typeof(DriftedSinkEntity).GetProperty("DriftResult", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(DriftedSinkEntity).GetField("<DriftResult>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var driftedSinks = principalEntityType.AddNavigation("DriftedSinks",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<DriftedSinkEntity>),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("DriftedSinks", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<DriftedSinks>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", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "drifted_sinks");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,186 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class EpssRawEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.EpssRawEntity",
typeof(EpssRawEntity),
baseEntityType,
propertyCount: 13,
unnamedIndexCount: 4,
keyCount: 1);
var rawId = runtimeEntityType.AddProperty(
"RawId",
typeof(long),
propertyInfo: typeof(EpssRawEntity).GetProperty("RawId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<RawId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: 0L);
rawId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn);
rawId.AddAnnotation("Relational:ColumnName", "raw_id");
var asOfDate = runtimeEntityType.AddProperty(
"AsOfDate",
typeof(DateOnly),
propertyInfo: typeof(EpssRawEntity).GetProperty("AsOfDate", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<AsOfDate>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateOnly(1, 1, 1));
asOfDate.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
asOfDate.AddAnnotation("Relational:ColumnName", "asof_date");
asOfDate.AddAnnotation("Relational:ColumnType", "date");
var compressedSize = runtimeEntityType.AddProperty(
"CompressedSize",
typeof(long?),
propertyInfo: typeof(EpssRawEntity).GetProperty("CompressedSize", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<CompressedSize>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
compressedSize.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
compressedSize.AddAnnotation("Relational:ColumnName", "compressed_size");
var decompressedSize = runtimeEntityType.AddProperty(
"DecompressedSize",
typeof(long?),
propertyInfo: typeof(EpssRawEntity).GetProperty("DecompressedSize", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<DecompressedSize>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
decompressedSize.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
decompressedSize.AddAnnotation("Relational:ColumnName", "decompressed_size");
var headerComment = runtimeEntityType.AddProperty(
"HeaderComment",
typeof(string),
propertyInfo: typeof(EpssRawEntity).GetProperty("HeaderComment", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<HeaderComment>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
headerComment.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
headerComment.AddAnnotation("Relational:ColumnName", "header_comment");
var importRunId = runtimeEntityType.AddProperty(
"ImportRunId",
typeof(Guid?),
propertyInfo: typeof(EpssRawEntity).GetProperty("ImportRunId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<ImportRunId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
importRunId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
importRunId.AddAnnotation("Relational:ColumnName", "import_run_id");
var ingestionTs = runtimeEntityType.AddProperty(
"IngestionTs",
typeof(DateTimeOffset),
propertyInfo: typeof(EpssRawEntity).GetProperty("IngestionTs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<IngestionTs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
ingestionTs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ingestionTs.AddAnnotation("Relational:ColumnName", "ingestion_ts");
ingestionTs.AddAnnotation("Relational:DefaultValueSql", "now()");
var modelVersion = runtimeEntityType.AddProperty(
"ModelVersion",
typeof(string),
propertyInfo: typeof(EpssRawEntity).GetProperty("ModelVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<ModelVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
modelVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
modelVersion.AddAnnotation("Relational:ColumnName", "model_version");
var payload = runtimeEntityType.AddProperty(
"Payload",
typeof(string),
propertyInfo: typeof(EpssRawEntity).GetProperty("Payload", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<Payload>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
payload.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
payload.AddAnnotation("Relational:ColumnName", "payload");
payload.AddAnnotation("Relational:ColumnType", "jsonb");
var payloadSha256 = runtimeEntityType.AddProperty(
"PayloadSha256",
typeof(byte[]),
propertyInfo: typeof(EpssRawEntity).GetProperty("PayloadSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<PayloadSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
payloadSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
payloadSha256.AddAnnotation("Relational:ColumnName", "payload_sha256");
var publishedDate = runtimeEntityType.AddProperty(
"PublishedDate",
typeof(DateOnly?),
propertyInfo: typeof(EpssRawEntity).GetProperty("PublishedDate", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<PublishedDate>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
publishedDate.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
publishedDate.AddAnnotation("Relational:ColumnName", "published_date");
publishedDate.AddAnnotation("Relational:ColumnType", "date");
var rowCount = runtimeEntityType.AddProperty(
"RowCount",
typeof(int),
propertyInfo: typeof(EpssRawEntity).GetProperty("RowCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<RowCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
rowCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rowCount.AddAnnotation("Relational:ColumnName", "row_count");
var sourceUri = runtimeEntityType.AddProperty(
"SourceUri",
typeof(string),
propertyInfo: typeof(EpssRawEntity).GetProperty("SourceUri", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssRawEntity).GetField("<SourceUri>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sourceUri.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sourceUri.AddAnnotation("Relational:ColumnName", "source_uri");
var key = runtimeEntityType.AddKey(
new[] { rawId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { asOfDate });
index.AddAnnotation("Relational:Name", "idx_epss_raw_asof");
var index0 = runtimeEntityType.AddIndex(
new[] { importRunId });
index0.AddAnnotation("Relational:Name", "idx_epss_raw_import_run");
var index1 = runtimeEntityType.AddIndex(
new[] { modelVersion });
index1.AddAnnotation("Relational:Name", "idx_epss_raw_model");
var index2 = runtimeEntityType.AddIndex(
new[] { sourceUri, asOfDate, payloadSha256 },
unique: true);
index2.AddAnnotation("Relational:Name", "epss_raw_unique");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "epss_raw");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,160 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class EpssSignalConfigEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.EpssSignalConfigEntity",
typeof(EpssSignalConfigEntity),
baseEntityType,
propertyCount: 10,
unnamedIndexCount: 1,
keyCount: 1);
var configId = runtimeEntityType.AddProperty(
"ConfigId",
typeof(Guid),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("ConfigId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<ConfigId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
configId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
configId.AddAnnotation("Relational:ColumnName", "config_id");
configId.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var bigJumpDelta = runtimeEntityType.AddProperty(
"BigJumpDelta",
typeof(double),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("BigJumpDelta", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<BigJumpDelta>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0.0);
bigJumpDelta.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
bigJumpDelta.AddAnnotation("Relational:ColumnName", "big_jump_delta");
bigJumpDelta.AddAnnotation("Relational:DefaultValue", 0.10000000000000001);
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "now()");
var criticalPercentile = runtimeEntityType.AddProperty(
"CriticalPercentile",
typeof(double),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("CriticalPercentile", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<CriticalPercentile>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0.0);
criticalPercentile.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
criticalPercentile.AddAnnotation("Relational:ColumnName", "critical_percentile");
criticalPercentile.AddAnnotation("Relational:DefaultValue", 0.995);
var enabledEventTypes = runtimeEntityType.AddProperty(
"EnabledEventTypes",
typeof(string[]),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("EnabledEventTypes", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<EnabledEventTypes>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var enabledEventTypesElementType = enabledEventTypes.SetElementType(typeof(string));
enabledEventTypes.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
enabledEventTypes.AddAnnotation("Relational:ColumnName", "enabled_event_types");
var highPercentile = runtimeEntityType.AddProperty(
"HighPercentile",
typeof(double),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("HighPercentile", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<HighPercentile>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0.0);
highPercentile.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
highPercentile.AddAnnotation("Relational:ColumnName", "high_percentile");
highPercentile.AddAnnotation("Relational:DefaultValue", 0.98999999999999999);
var mediumPercentile = runtimeEntityType.AddProperty(
"MediumPercentile",
typeof(double),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("MediumPercentile", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<MediumPercentile>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0.0);
mediumPercentile.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
mediumPercentile.AddAnnotation("Relational:ColumnName", "medium_percentile");
mediumPercentile.AddAnnotation("Relational:DefaultValue", 0.90000000000000002);
var suppressOnModelChange = runtimeEntityType.AddProperty(
"SuppressOnModelChange",
typeof(bool),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("SuppressOnModelChange", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<SuppressOnModelChange>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: true);
suppressOnModelChange.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
suppressOnModelChange.AddAnnotation("Relational:ColumnName", "suppress_on_model_change");
suppressOnModelChange.AddAnnotation("Relational:DefaultValue", true);
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var updatedAt = runtimeEntityType.AddProperty(
"UpdatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(EpssSignalConfigEntity).GetProperty("UpdatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalConfigEntity).GetField("<UpdatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
updatedAt.AddAnnotation("Relational:DefaultValueSql", "now()");
var key = runtimeEntityType.AddKey(
new[] { configId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { tenantId },
unique: true);
index.AddAnnotation("Relational:Name", "epss_signal_config_tenant_unique");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "epss_signal_config");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,212 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class EpssSignalEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.EpssSignalEntity",
typeof(EpssSignalEntity),
baseEntityType,
propertyCount: 16,
unnamedIndexCount: 4,
keyCount: 1);
var signalId = runtimeEntityType.AddProperty(
"SignalId",
typeof(long),
propertyInfo: typeof(EpssSignalEntity).GetProperty("SignalId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<SignalId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: 0L);
signalId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityAlwaysColumn);
signalId.AddAnnotation("Relational:ColumnName", "signal_id");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(EpssSignalEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "now()");
var cveId = runtimeEntityType.AddProperty(
"CveId",
typeof(string),
propertyInfo: typeof(EpssSignalEntity).GetProperty("CveId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<CveId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
cveId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
cveId.AddAnnotation("Relational:ColumnName", "cve_id");
var dedupeKey = runtimeEntityType.AddProperty(
"DedupeKey",
typeof(string),
propertyInfo: typeof(EpssSignalEntity).GetProperty("DedupeKey", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<DedupeKey>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
dedupeKey.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
dedupeKey.AddAnnotation("Relational:ColumnName", "dedupe_key");
var epssDelta = runtimeEntityType.AddProperty(
"EpssDelta",
typeof(double?),
propertyInfo: typeof(EpssSignalEntity).GetProperty("EpssDelta", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<EpssDelta>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
epssDelta.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
epssDelta.AddAnnotation("Relational:ColumnName", "epss_delta");
var epssScore = runtimeEntityType.AddProperty(
"EpssScore",
typeof(double?),
propertyInfo: typeof(EpssSignalEntity).GetProperty("EpssScore", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<EpssScore>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
epssScore.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
epssScore.AddAnnotation("Relational:ColumnName", "epss_score");
var eventType = runtimeEntityType.AddProperty(
"EventType",
typeof(string),
propertyInfo: typeof(EpssSignalEntity).GetProperty("EventType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<EventType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
eventType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
eventType.AddAnnotation("Relational:ColumnName", "event_type");
var explainHash = runtimeEntityType.AddProperty(
"ExplainHash",
typeof(byte[]),
propertyInfo: typeof(EpssSignalEntity).GetProperty("ExplainHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<ExplainHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
explainHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
explainHash.AddAnnotation("Relational:ColumnName", "explain_hash");
var isModelChange = runtimeEntityType.AddProperty(
"IsModelChange",
typeof(bool),
propertyInfo: typeof(EpssSignalEntity).GetProperty("IsModelChange", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<IsModelChange>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: false);
isModelChange.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isModelChange.AddAnnotation("Relational:ColumnName", "is_model_change");
isModelChange.AddAnnotation("Relational:DefaultValue", false);
var modelDate = runtimeEntityType.AddProperty(
"ModelDate",
typeof(DateOnly),
propertyInfo: typeof(EpssSignalEntity).GetProperty("ModelDate", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<ModelDate>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new DateOnly(1, 1, 1));
modelDate.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
modelDate.AddAnnotation("Relational:ColumnName", "model_date");
modelDate.AddAnnotation("Relational:ColumnType", "date");
var modelVersion = runtimeEntityType.AddProperty(
"ModelVersion",
typeof(string),
propertyInfo: typeof(EpssSignalEntity).GetProperty("ModelVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<ModelVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
modelVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
modelVersion.AddAnnotation("Relational:ColumnName", "model_version");
var payload = runtimeEntityType.AddProperty(
"Payload",
typeof(string),
propertyInfo: typeof(EpssSignalEntity).GetProperty("Payload", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<Payload>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
payload.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
payload.AddAnnotation("Relational:ColumnName", "payload");
payload.AddAnnotation("Relational:ColumnType", "jsonb");
var percentile = runtimeEntityType.AddProperty(
"Percentile",
typeof(double?),
propertyInfo: typeof(EpssSignalEntity).GetProperty("Percentile", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<Percentile>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
percentile.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
percentile.AddAnnotation("Relational:ColumnName", "percentile");
var percentileDelta = runtimeEntityType.AddProperty(
"PercentileDelta",
typeof(double?),
propertyInfo: typeof(EpssSignalEntity).GetProperty("PercentileDelta", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<PercentileDelta>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
percentileDelta.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
percentileDelta.AddAnnotation("Relational:ColumnName", "percentile_delta");
var riskBand = runtimeEntityType.AddProperty(
"RiskBand",
typeof(string),
propertyInfo: typeof(EpssSignalEntity).GetProperty("RiskBand", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<RiskBand>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
riskBand.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
riskBand.AddAnnotation("Relational:ColumnName", "risk_band");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(EpssSignalEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(EpssSignalEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { signalId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { tenantId, dedupeKey },
unique: true);
index.AddAnnotation("Relational:Name", "epss_signal_dedupe");
var index0 = runtimeEntityType.AddIndex(
new[] { tenantId, modelDate });
index0.AddAnnotation("Relational:Name", "idx_epss_signal_tenant_date");
var index1 = runtimeEntityType.AddIndex(
new[] { tenantId, cveId, modelDate });
index1.AddAnnotation("Relational:Name", "idx_epss_signal_tenant_cve");
var index2 = runtimeEntityType.AddIndex(
new[] { tenantId, eventType, modelDate });
index2.AddAnnotation("Relational:Name", "idx_epss_signal_event_type");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "epss_signal");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,127 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class FacetSealEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.FacetSealEntity",
typeof(FacetSealEntity),
baseEntityType,
propertyCount: 8,
unnamedIndexCount: 2,
keyCount: 1);
var combinedMerkleRoot = runtimeEntityType.AddProperty(
"CombinedMerkleRoot",
typeof(string),
propertyInfo: typeof(FacetSealEntity).GetProperty("CombinedMerkleRoot", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<CombinedMerkleRoot>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
afterSaveBehavior: PropertySaveBehavior.Throw);
combinedMerkleRoot.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
combinedMerkleRoot.AddAnnotation("Relational:ColumnName", "combined_merkle_root");
var buildAttestationRef = runtimeEntityType.AddProperty(
"BuildAttestationRef",
typeof(string),
propertyInfo: typeof(FacetSealEntity).GetProperty("BuildAttestationRef", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<BuildAttestationRef>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
buildAttestationRef.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
buildAttestationRef.AddAnnotation("Relational:ColumnName", "build_attestation_ref");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(FacetSealEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).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 imageDigest = runtimeEntityType.AddProperty(
"ImageDigest",
typeof(string),
propertyInfo: typeof(FacetSealEntity).GetProperty("ImageDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<ImageDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
imageDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
imageDigest.AddAnnotation("Relational:ColumnName", "image_digest");
var schemaVersion = runtimeEntityType.AddProperty(
"SchemaVersion",
typeof(int),
propertyInfo: typeof(FacetSealEntity).GetProperty("SchemaVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<SchemaVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
schemaVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
schemaVersion.AddAnnotation("Relational:ColumnName", "schema_version");
var sealContent = runtimeEntityType.AddProperty(
"SealContent",
typeof(string),
propertyInfo: typeof(FacetSealEntity).GetProperty("SealContent", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<SealContent>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sealContent.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sealContent.AddAnnotation("Relational:ColumnName", "seal_content");
sealContent.AddAnnotation("Relational:ColumnType", "jsonb");
var signature = runtimeEntityType.AddProperty(
"Signature",
typeof(string),
propertyInfo: typeof(FacetSealEntity).GetProperty("Signature", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<Signature>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
signature.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signature.AddAnnotation("Relational:ColumnName", "signature");
var signingKeyId = runtimeEntityType.AddProperty(
"SigningKeyId",
typeof(string),
propertyInfo: typeof(FacetSealEntity).GetProperty("SigningKeyId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FacetSealEntity).GetField("<SigningKeyId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
signingKeyId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signingKeyId.AddAnnotation("Relational:ColumnName", "signing_key_id");
var key = runtimeEntityType.AddKey(
new[] { combinedMerkleRoot });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { imageDigest });
index.AddAnnotation("Relational:Name", "idx_facet_seals_image_digest");
var index0 = runtimeEntityType.AddIndex(
new[] { imageDigest, createdAt });
index0.AddAnnotation("Relational:Name", "idx_facet_seals_image_created");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "facet_seals");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,232 @@
// <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.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class FuncNodeEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.FuncNodeEntity",
typeof(FuncNodeEntity),
baseEntityType,
propertyCount: 15,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(FuncNodeEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var confidence = runtimeEntityType.AddProperty(
"Confidence",
typeof(double),
propertyInfo: typeof(FuncNodeEntity).GetProperty("Confidence", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<Confidence>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0.0);
confidence.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
confidence.AddAnnotation("Relational:ColumnName", "confidence");
confidence.AddAnnotation("Relational:DefaultValue", 1.0);
var createdAtUtc = runtimeEntityType.AddProperty(
"CreatedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(FuncNodeEntity).GetProperty("CreatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<CreatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAtUtc.AddAnnotation("Relational:ColumnName", "created_at_utc");
createdAtUtc.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var endAddress = runtimeEntityType.AddProperty(
"EndAddress",
typeof(long),
propertyInfo: typeof(FuncNodeEntity).GetProperty("EndAddress", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<EndAddress>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0L);
endAddress.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
endAddress.AddAnnotation("Relational:ColumnName", "end_address");
var entrypointType = runtimeEntityType.AddProperty(
"EntrypointType",
typeof(string),
propertyInfo: typeof(FuncNodeEntity).GetProperty("EntrypointType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<EntrypointType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
entrypointType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
entrypointType.AddAnnotation("Relational:ColumnName", "entrypoint_type");
var funcProofId = runtimeEntityType.AddProperty(
"FuncProofId",
typeof(Guid),
propertyInfo: typeof(FuncNodeEntity).GetProperty("FuncProofId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<FuncProofId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
funcProofId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
funcProofId.AddAnnotation("Relational:ColumnName", "func_proof_id");
var functionHash = runtimeEntityType.AddProperty(
"FunctionHash",
typeof(string),
propertyInfo: typeof(FuncNodeEntity).GetProperty("FunctionHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<FunctionHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
functionHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
functionHash.AddAnnotation("Relational:ColumnName", "function_hash");
var isEntrypoint = runtimeEntityType.AddProperty(
"IsEntrypoint",
typeof(bool),
propertyInfo: typeof(FuncNodeEntity).GetProperty("IsEntrypoint", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<IsEntrypoint>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: false);
isEntrypoint.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isEntrypoint.AddAnnotation("Relational:ColumnName", "is_entrypoint");
isEntrypoint.AddAnnotation("Relational:DefaultValue", false);
var isSink = runtimeEntityType.AddProperty(
"IsSink",
typeof(bool),
propertyInfo: typeof(FuncNodeEntity).GetProperty("IsSink", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<IsSink>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: false);
isSink.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isSink.AddAnnotation("Relational:ColumnName", "is_sink");
isSink.AddAnnotation("Relational:DefaultValue", false);
var sinkVulnId = runtimeEntityType.AddProperty(
"SinkVulnId",
typeof(string),
propertyInfo: typeof(FuncNodeEntity).GetProperty("SinkVulnId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<SinkVulnId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
sinkVulnId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sinkVulnId.AddAnnotation("Relational:ColumnName", "sink_vuln_id");
var sourceFile = runtimeEntityType.AddProperty(
"SourceFile",
typeof(string),
propertyInfo: typeof(FuncNodeEntity).GetProperty("SourceFile", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<SourceFile>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
sourceFile.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sourceFile.AddAnnotation("Relational:ColumnName", "source_file");
var sourceLine = runtimeEntityType.AddProperty(
"SourceLine",
typeof(int?),
propertyInfo: typeof(FuncNodeEntity).GetProperty("SourceLine", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<SourceLine>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
sourceLine.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sourceLine.AddAnnotation("Relational:ColumnName", "source_line");
var startAddress = runtimeEntityType.AddProperty(
"StartAddress",
typeof(long),
propertyInfo: typeof(FuncNodeEntity).GetProperty("StartAddress", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<StartAddress>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0L);
startAddress.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
startAddress.AddAnnotation("Relational:ColumnName", "start_address");
var symbol = runtimeEntityType.AddProperty(
"Symbol",
typeof(string),
propertyInfo: typeof(FuncNodeEntity).GetProperty("Symbol", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<Symbol>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
symbol.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
symbol.AddAnnotation("Relational:ColumnName", "symbol");
var symbolDigest = runtimeEntityType.AddProperty(
"SymbolDigest",
typeof(string),
propertyInfo: typeof(FuncNodeEntity).GetProperty("SymbolDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<SymbolDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
symbolDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
symbolDigest.AddAnnotation("Relational:ColumnName", "symbol_digest");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { funcProofId });
index.AddAnnotation("Relational:Name", "idx_func_node_proof_id");
var index0 = runtimeEntityType.AddIndex(
new[] { symbol });
index0.AddAnnotation("Relational:Name", "idx_func_node_symbol");
var index1 = runtimeEntityType.AddIndex(
new[] { symbolDigest });
index1.AddAnnotation("Relational:Name", "idx_func_node_symbol_digest");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FuncProofId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var funcProof = declaringEntityType.AddNavigation("FuncProof",
runtimeForeignKey,
onDependent: true,
typeof(FuncProofEntity),
propertyInfo: typeof(FuncNodeEntity).GetProperty("FuncProof", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncNodeEntity).GetField("<FuncProof>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var nodes = principalEntityType.AddNavigation("Nodes",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<FuncNodeEntity>),
propertyInfo: typeof(FuncProofEntity).GetProperty("Nodes", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<Nodes>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", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "func_node");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,254 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class FuncProofEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.FuncProofEntity",
typeof(FuncProofEntity),
baseEntityType,
propertyCount: 20,
navigationCount: 2,
unnamedIndexCount: 5,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(FuncProofEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var architecture = runtimeEntityType.AddProperty(
"Architecture",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("Architecture", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<Architecture>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
architecture.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
architecture.AddAnnotation("Relational:ColumnName", "architecture");
var binaryFormat = runtimeEntityType.AddProperty(
"BinaryFormat",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("BinaryFormat", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<BinaryFormat>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
binaryFormat.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
binaryFormat.AddAnnotation("Relational:ColumnName", "binary_format");
var buildId = runtimeEntityType.AddProperty(
"BuildId",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("BuildId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<BuildId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
buildId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
buildId.AddAnnotation("Relational:ColumnName", "build_id");
var buildIdType = runtimeEntityType.AddProperty(
"BuildIdType",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("BuildIdType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<BuildIdType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
buildIdType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
buildIdType.AddAnnotation("Relational:ColumnName", "build_id_type");
var compressedContent = runtimeEntityType.AddProperty(
"CompressedContent",
typeof(byte[]),
propertyInfo: typeof(FuncProofEntity).GetProperty("CompressedContent", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<CompressedContent>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
compressedContent.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
compressedContent.AddAnnotation("Relational:ColumnName", "compressed_content");
var createdAtUtc = runtimeEntityType.AddProperty(
"CreatedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(FuncProofEntity).GetProperty("CreatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<CreatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAtUtc.AddAnnotation("Relational:ColumnName", "created_at_utc");
createdAtUtc.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var dsseEnvelopeId = runtimeEntityType.AddProperty(
"DsseEnvelopeId",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("DsseEnvelopeId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<DsseEnvelopeId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
dsseEnvelopeId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
dsseEnvelopeId.AddAnnotation("Relational:ColumnName", "dsse_envelope_id");
var fileSha256 = runtimeEntityType.AddProperty(
"FileSha256",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("FileSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<FileSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
fileSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
fileSha256.AddAnnotation("Relational:ColumnName", "file_sha256");
var functionCount = runtimeEntityType.AddProperty(
"FunctionCount",
typeof(int),
propertyInfo: typeof(FuncProofEntity).GetProperty("FunctionCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<FunctionCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0);
functionCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
functionCount.AddAnnotation("Relational:ColumnName", "function_count");
functionCount.AddAnnotation("Relational:DefaultValue", 0);
var generatedAtUtc = runtimeEntityType.AddProperty(
"GeneratedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(FuncProofEntity).GetProperty("GeneratedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<GeneratedAtUtc>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)));
generatedAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
generatedAtUtc.AddAnnotation("Relational:ColumnName", "generated_at_utc");
var generatorVersion = runtimeEntityType.AddProperty(
"GeneratorVersion",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("GeneratorVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<GeneratorVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
generatorVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
generatorVersion.AddAnnotation("Relational:ColumnName", "generator_version");
var isStripped = runtimeEntityType.AddProperty(
"IsStripped",
typeof(bool),
propertyInfo: typeof(FuncProofEntity).GetProperty("IsStripped", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<IsStripped>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: false);
isStripped.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isStripped.AddAnnotation("Relational:ColumnName", "is_stripped");
isStripped.AddAnnotation("Relational:DefaultValue", false);
var ociArtifactDigest = runtimeEntityType.AddProperty(
"OciArtifactDigest",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("OciArtifactDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<OciArtifactDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
ociArtifactDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ociArtifactDigest.AddAnnotation("Relational:ColumnName", "oci_artifact_digest");
var proofContent = runtimeEntityType.AddProperty(
"ProofContent",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("ProofContent", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<ProofContent>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
proofContent.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
proofContent.AddAnnotation("Relational:ColumnName", "proof_content");
proofContent.AddAnnotation("Relational:ColumnType", "jsonb");
var proofId = runtimeEntityType.AddProperty(
"ProofId",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("ProofId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<ProofId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
proofId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
proofId.AddAnnotation("Relational:ColumnName", "proof_id");
var rekorEntryId = runtimeEntityType.AddProperty(
"RekorEntryId",
typeof(string),
propertyInfo: typeof(FuncProofEntity).GetProperty("RekorEntryId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<RekorEntryId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
rekorEntryId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rekorEntryId.AddAnnotation("Relational:ColumnName", "rekor_entry_id");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(Guid),
propertyInfo: typeof(FuncProofEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var traceCount = runtimeEntityType.AddProperty(
"TraceCount",
typeof(int),
propertyInfo: typeof(FuncProofEntity).GetProperty("TraceCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<TraceCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0);
traceCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
traceCount.AddAnnotation("Relational:ColumnName", "trace_count");
traceCount.AddAnnotation("Relational:DefaultValue", 0);
var updatedAtUtc = runtimeEntityType.AddProperty(
"UpdatedAtUtc",
typeof(DateTimeOffset?),
propertyInfo: typeof(FuncProofEntity).GetProperty("UpdatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<UpdatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
updatedAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
updatedAtUtc.AddAnnotation("Relational:ColumnName", "updated_at_utc");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { buildId });
index.AddAnnotation("Relational:Name", "idx_func_proof_build_id");
var index0 = runtimeEntityType.AddIndex(
new[] { fileSha256 });
index0.AddAnnotation("Relational:Name", "idx_func_proof_file_sha256");
var index1 = runtimeEntityType.AddIndex(
new[] { proofId },
unique: true);
index1.AddAnnotation("Relational:Name", "idx_func_proof_proof_id");
var index2 = runtimeEntityType.AddIndex(
new[] { scanId });
index2.AddAnnotation("Relational:Name", "idx_func_proof_scan_id");
var index3 = runtimeEntityType.AddIndex(
new[] { buildId, architecture });
index3.AddAnnotation("Relational:Name", "idx_func_proof_build_arch");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "func_proof");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,186 @@
// <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.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class FuncTraceEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.FuncTraceEntity",
typeof(FuncTraceEntity),
baseEntityType,
propertyCount: 10,
navigationCount: 1,
foreignKeyCount: 1,
unnamedIndexCount: 4,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(FuncTraceEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var createdAtUtc = runtimeEntityType.AddProperty(
"CreatedAtUtc",
typeof(DateTimeOffset),
propertyInfo: typeof(FuncTraceEntity).GetProperty("CreatedAtUtc", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<CreatedAtUtc>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
createdAtUtc.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
createdAtUtc.AddAnnotation("Relational:ColumnName", "created_at_utc");
createdAtUtc.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var edgeListHash = runtimeEntityType.AddProperty(
"EdgeListHash",
typeof(string),
propertyInfo: typeof(FuncTraceEntity).GetProperty("EdgeListHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<EdgeListHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
edgeListHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
edgeListHash.AddAnnotation("Relational:ColumnName", "edge_list_hash");
var entrySymbolDigest = runtimeEntityType.AddProperty(
"EntrySymbolDigest",
typeof(string),
propertyInfo: typeof(FuncTraceEntity).GetProperty("EntrySymbolDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<EntrySymbolDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
entrySymbolDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
entrySymbolDigest.AddAnnotation("Relational:ColumnName", "entry_symbol_digest");
var funcProofId = runtimeEntityType.AddProperty(
"FuncProofId",
typeof(Guid),
propertyInfo: typeof(FuncTraceEntity).GetProperty("FuncProofId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<FuncProofId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
funcProofId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
funcProofId.AddAnnotation("Relational:ColumnName", "func_proof_id");
var hopCount = runtimeEntityType.AddProperty(
"HopCount",
typeof(int),
propertyInfo: typeof(FuncTraceEntity).GetProperty("HopCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<HopCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
hopCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
hopCount.AddAnnotation("Relational:ColumnName", "hop_count");
var path = runtimeEntityType.AddProperty(
"Path",
typeof(string[]),
propertyInfo: typeof(FuncTraceEntity).GetProperty("Path", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<Path>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var pathElementType = path.SetElementType(typeof(string));
path.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
path.AddAnnotation("Relational:ColumnName", "path");
var sinkSymbolDigest = runtimeEntityType.AddProperty(
"SinkSymbolDigest",
typeof(string),
propertyInfo: typeof(FuncTraceEntity).GetProperty("SinkSymbolDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<SinkSymbolDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
sinkSymbolDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sinkSymbolDigest.AddAnnotation("Relational:ColumnName", "sink_symbol_digest");
var traceId = runtimeEntityType.AddProperty(
"TraceId",
typeof(string),
propertyInfo: typeof(FuncTraceEntity).GetProperty("TraceId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<TraceId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
traceId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
traceId.AddAnnotation("Relational:ColumnName", "trace_id");
var truncated = runtimeEntityType.AddProperty(
"Truncated",
typeof(bool),
propertyInfo: typeof(FuncTraceEntity).GetProperty("Truncated", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<Truncated>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: false);
truncated.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
truncated.AddAnnotation("Relational:ColumnName", "truncated");
truncated.AddAnnotation("Relational:DefaultValue", false);
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { edgeListHash });
index.AddAnnotation("Relational:Name", "idx_func_trace_edge_hash");
var index0 = runtimeEntityType.AddIndex(
new[] { entrySymbolDigest });
index0.AddAnnotation("Relational:Name", "idx_func_trace_entry_digest");
var index1 = runtimeEntityType.AddIndex(
new[] { funcProofId });
index1.AddAnnotation("Relational:Name", "idx_func_trace_proof_id");
var index2 = runtimeEntityType.AddIndex(
new[] { sinkSymbolDigest });
index2.AddAnnotation("Relational:Name", "idx_func_trace_sink_digest");
return runtimeEntityType;
}
public static RuntimeForeignKey CreateForeignKey1(RuntimeEntityType declaringEntityType, RuntimeEntityType principalEntityType)
{
var runtimeForeignKey = declaringEntityType.AddForeignKey(new[] { declaringEntityType.FindProperty("FuncProofId") },
principalEntityType.FindKey(new[] { principalEntityType.FindProperty("Id") }),
principalEntityType,
deleteBehavior: DeleteBehavior.Cascade,
required: true);
var funcProof = declaringEntityType.AddNavigation("FuncProof",
runtimeForeignKey,
onDependent: true,
typeof(FuncProofEntity),
propertyInfo: typeof(FuncTraceEntity).GetProperty("FuncProof", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncTraceEntity).GetField("<FuncProof>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
var traces = principalEntityType.AddNavigation("Traces",
runtimeForeignKey,
onDependent: false,
typeof(ICollection<FuncTraceEntity>),
propertyInfo: typeof(FuncProofEntity).GetProperty("Traces", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(FuncProofEntity).GetField("<Traces>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", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "func_trace");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,148 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class IdempotencyKeyEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.IdempotencyKeyEntity",
typeof(IdempotencyKeyEntity),
baseEntityType,
propertyCount: 9,
unnamedIndexCount: 3,
keyCount: 1);
var keyId = runtimeEntityType.AddProperty(
"KeyId",
typeof(Guid),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("KeyId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<KeyId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
keyId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
keyId.AddAnnotation("Relational:ColumnName", "key_id");
keyId.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var contentDigest = runtimeEntityType.AddProperty(
"ContentDigest",
typeof(string),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("ContentDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<ContentDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
contentDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
contentDigest.AddAnnotation("Relational:ColumnName", "content_digest");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "now()");
var endpointPath = runtimeEntityType.AddProperty(
"EndpointPath",
typeof(string),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("EndpointPath", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<EndpointPath>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
endpointPath.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
endpointPath.AddAnnotation("Relational:ColumnName", "endpoint_path");
var expiresAt = runtimeEntityType.AddProperty(
"ExpiresAt",
typeof(DateTimeOffset),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("ExpiresAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<ExpiresAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
expiresAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
expiresAt.AddAnnotation("Relational:ColumnName", "expires_at");
expiresAt.AddAnnotation("Relational:DefaultValueSql", "(now() + interval '24 hours')");
var responseBody = runtimeEntityType.AddProperty(
"ResponseBody",
typeof(string),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("ResponseBody", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<ResponseBody>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
responseBody.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
responseBody.AddAnnotation("Relational:ColumnName", "response_body");
responseBody.AddAnnotation("Relational:ColumnType", "jsonb");
var responseHeaders = runtimeEntityType.AddProperty(
"ResponseHeaders",
typeof(string),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("ResponseHeaders", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<ResponseHeaders>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
responseHeaders.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
responseHeaders.AddAnnotation("Relational:ColumnName", "response_headers");
responseHeaders.AddAnnotation("Relational:ColumnType", "jsonb");
var responseStatus = runtimeEntityType.AddProperty(
"ResponseStatus",
typeof(int),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("ResponseStatus", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).GetField("<ResponseStatus>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
responseStatus.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
responseStatus.AddAnnotation("Relational:ColumnName", "response_status");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(string),
propertyInfo: typeof(IdempotencyKeyEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(IdempotencyKeyEntity).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[] { keyId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { expiresAt });
index.AddAnnotation("Relational:Name", "ix_idempotency_keys_expires_at");
var index0 = runtimeEntityType.AddIndex(
new[] { tenantId, contentDigest });
index0.AddAnnotation("Relational:Name", "ix_idempotency_keys_tenant_digest");
var index1 = runtimeEntityType.AddIndex(
new[] { tenantId, contentDigest, endpointPath },
unique: true);
index1.AddAnnotation("Relational:Name", "uk_idempotency_tenant_digest_path");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "idempotency_keys");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,204 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class MaterialRiskChangeEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.MaterialRiskChangeEntity",
typeof(MaterialRiskChangeEntity),
baseEntityType,
propertyCount: 16,
unnamedIndexCount: 2,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var associatedVulns = runtimeEntityType.AddProperty(
"AssociatedVulns",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("AssociatedVulns", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<AssociatedVulns>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
associatedVulns.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
associatedVulns.AddAnnotation("Relational:ColumnName", "associated_vulns");
associatedVulns.AddAnnotation("Relational:ColumnType", "jsonb");
var baseScanId = runtimeEntityType.AddProperty(
"BaseScanId",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("BaseScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<BaseScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
baseScanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
baseScanId.AddAnnotation("Relational:ColumnName", "base_scan_id");
var cause = runtimeEntityType.AddProperty(
"Cause",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("Cause", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<Cause>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
cause.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
cause.AddAnnotation("Relational:ColumnName", "cause");
var causeKind = runtimeEntityType.AddProperty(
"CauseKind",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("CauseKind", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<CauseKind>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
causeKind.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
causeKind.AddAnnotation("Relational:ColumnName", "cause_kind");
var changes = runtimeEntityType.AddProperty(
"Changes",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("Changes", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<Changes>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
changes.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
changes.AddAnnotation("Relational:ColumnName", "changes");
changes.AddAnnotation("Relational:ColumnType", "jsonb");
var currentStateHash = runtimeEntityType.AddProperty(
"CurrentStateHash",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("CurrentStateHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<CurrentStateHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
currentStateHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
currentStateHash.AddAnnotation("Relational:ColumnName", "current_state_hash");
var detectedAt = runtimeEntityType.AddProperty(
"DetectedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("DetectedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<DetectedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
detectedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
detectedAt.AddAnnotation("Relational:ColumnName", "detected_at");
detectedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var hasMaterialChange = runtimeEntityType.AddProperty(
"HasMaterialChange",
typeof(bool),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("HasMaterialChange", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<HasMaterialChange>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
hasMaterialChange.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
hasMaterialChange.AddAnnotation("Relational:ColumnName", "has_material_change");
var pathNodes = runtimeEntityType.AddProperty(
"PathNodes",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("PathNodes", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<PathNodes>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
pathNodes.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
pathNodes.AddAnnotation("Relational:ColumnName", "path_nodes");
pathNodes.AddAnnotation("Relational:ColumnType", "jsonb");
var previousStateHash = runtimeEntityType.AddProperty(
"PreviousStateHash",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("PreviousStateHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<PreviousStateHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
previousStateHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
previousStateHash.AddAnnotation("Relational:ColumnName", "previous_state_hash");
var priorityScore = runtimeEntityType.AddProperty(
"PriorityScore",
typeof(decimal),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("PriorityScore", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<PriorityScore>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0m);
priorityScore.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
priorityScore.AddAnnotation("Relational:ColumnName", "priority_score");
priorityScore.AddAnnotation("Relational:ColumnType", "numeric(12,4)");
var purl = runtimeEntityType.AddProperty(
"Purl",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("Purl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<Purl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
purl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
purl.AddAnnotation("Relational:ColumnName", "purl");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var vulnId = runtimeEntityType.AddProperty(
"VulnId",
typeof(string),
propertyInfo: typeof(MaterialRiskChangeEntity).GetProperty("VulnId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(MaterialRiskChangeEntity).GetField("<VulnId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
vulnId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vulnId.AddAnnotation("Relational:ColumnName", "vuln_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { tenantId, scanId });
index.AddAnnotation("Relational:Name", "idx_material_changes_tenant_scan");
var index0 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, vulnId, purl },
unique: true);
index0.AddAnnotation("Relational:Name", "material_change_unique_per_scan");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "material_risk_changes");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,193 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class ProofBundleEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.ProofBundleEntity",
typeof(ProofBundleEntity),
baseEntityType,
propertyCount: 14,
unnamedIndexCount: 2,
keyCount: 1);
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(Guid),
propertyInfo: typeof(ProofBundleEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var rootHash = runtimeEntityType.AddProperty(
"RootHash",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("RootHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<RootHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
afterSaveBehavior: PropertySaveBehavior.Throw,
maxLength: 128);
rootHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rootHash.AddAnnotation("Relational:ColumnName", "root_hash");
var bundleContent = runtimeEntityType.AddProperty(
"BundleContent",
typeof(byte[]),
propertyInfo: typeof(ProofBundleEntity).GetProperty("BundleContent", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<BundleContent>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
bundleContent.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
bundleContent.AddAnnotation("Relational:ColumnName", "bundle_content");
var bundleHash = runtimeEntityType.AddProperty(
"BundleHash",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("BundleHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<BundleHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 128);
bundleHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
bundleHash.AddAnnotation("Relational:ColumnName", "bundle_hash");
var bundleType = runtimeEntityType.AddProperty(
"BundleType",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("BundleType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<BundleType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 32);
bundleType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
bundleType.AddAnnotation("Relational:ColumnName", "bundle_type");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ProofBundleEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "now()");
var dsseEnvelope = runtimeEntityType.AddProperty(
"DsseEnvelope",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("DsseEnvelope", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<DsseEnvelope>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
dsseEnvelope.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
dsseEnvelope.AddAnnotation("Relational:ColumnName", "dsse_envelope");
dsseEnvelope.AddAnnotation("Relational:ColumnType", "jsonb");
var expiresAt = runtimeEntityType.AddProperty(
"ExpiresAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(ProofBundleEntity).GetProperty("ExpiresAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<ExpiresAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
expiresAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
expiresAt.AddAnnotation("Relational:ColumnName", "expires_at");
var ledgerHash = runtimeEntityType.AddProperty(
"LedgerHash",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("LedgerHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<LedgerHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 128);
ledgerHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
ledgerHash.AddAnnotation("Relational:ColumnName", "ledger_hash");
var manifestHash = runtimeEntityType.AddProperty(
"ManifestHash",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("ManifestHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<ManifestHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 128);
manifestHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
manifestHash.AddAnnotation("Relational:ColumnName", "manifest_hash");
var sbomHash = runtimeEntityType.AddProperty(
"SbomHash",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("SbomHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<SbomHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 128);
sbomHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sbomHash.AddAnnotation("Relational:ColumnName", "sbom_hash");
var signatureAlgorithm = runtimeEntityType.AddProperty(
"SignatureAlgorithm",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("SignatureAlgorithm", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<SignatureAlgorithm>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 64);
signatureAlgorithm.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signatureAlgorithm.AddAnnotation("Relational:ColumnName", "signature_algorithm");
var signatureKeyId = runtimeEntityType.AddProperty(
"SignatureKeyId",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("SignatureKeyId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<SignatureKeyId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 256);
signatureKeyId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
signatureKeyId.AddAnnotation("Relational:ColumnName", "signature_keyid");
var vexHash = runtimeEntityType.AddProperty(
"VexHash",
typeof(string),
propertyInfo: typeof(ProofBundleEntity).GetProperty("VexHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ProofBundleEntity).GetField("<VexHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true,
maxLength: 128);
vexHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexHash.AddAnnotation("Relational:ColumnName", "vex_hash");
var key = runtimeEntityType.AddKey(
new[] { scanId, rootHash });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { createdAt });
index.AddAnnotation("Relational:Name", "idx_proof_bundle_created_at");
var index0 = runtimeEntityType.AddIndex(
new[] { rootHash });
index0.AddAnnotation("Relational:Name", "idx_proof_bundle_root_hash");
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", "proof_bundle");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,144 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class ReachabilityDriftResultEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.ReachabilityDriftResultEntity",
typeof(ReachabilityDriftResultEntity),
baseEntityType,
propertyCount: 9,
navigationCount: 1,
unnamedIndexCount: 2,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var baseScanId = runtimeEntityType.AddProperty(
"BaseScanId",
typeof(string),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("BaseScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<BaseScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
baseScanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
baseScanId.AddAnnotation("Relational:ColumnName", "base_scan_id");
var detectedAt = runtimeEntityType.AddProperty(
"DetectedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("DetectedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<DetectedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
detectedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
detectedAt.AddAnnotation("Relational:ColumnName", "detected_at");
detectedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var headScanId = runtimeEntityType.AddProperty(
"HeadScanId",
typeof(string),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("HeadScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<HeadScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
headScanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
headScanId.AddAnnotation("Relational:ColumnName", "head_scan_id");
var language = runtimeEntityType.AddProperty(
"Language",
typeof(string),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("Language", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<Language>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
language.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
language.AddAnnotation("Relational:ColumnName", "language");
var newlyReachableCount = runtimeEntityType.AddProperty(
"NewlyReachableCount",
typeof(int),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("NewlyReachableCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<NewlyReachableCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0);
newlyReachableCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
newlyReachableCount.AddAnnotation("Relational:ColumnName", "newly_reachable_count");
newlyReachableCount.AddAnnotation("Relational:DefaultValue", 0);
var newlyUnreachableCount = runtimeEntityType.AddProperty(
"NewlyUnreachableCount",
typeof(int),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("NewlyUnreachableCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<NewlyUnreachableCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: 0);
newlyUnreachableCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
newlyUnreachableCount.AddAnnotation("Relational:ColumnName", "newly_unreachable_count");
newlyUnreachableCount.AddAnnotation("Relational:DefaultValue", 0);
var resultDigest = runtimeEntityType.AddProperty(
"ResultDigest",
typeof(string),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("ResultDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<ResultDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
resultDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
resultDigest.AddAnnotation("Relational:ColumnName", "result_digest");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(ReachabilityDriftResultEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityDriftResultEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { tenantId, headScanId, language });
index.AddAnnotation("Relational:Name", "idx_reachability_drift_head");
var index0 = runtimeEntityType.AddIndex(
new[] { tenantId, baseScanId, headScanId, language, resultDigest },
unique: true);
index0.AddAnnotation("Relational:Name", "reachability_drift_unique");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "reachability_drift_results");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,148 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class ReachabilityResultEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.ReachabilityResultEntity",
typeof(ReachabilityResultEntity),
baseEntityType,
propertyCount: 10,
unnamedIndexCount: 2,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var computedAt = runtimeEntityType.AddProperty(
"ComputedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("ComputedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<ComputedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
computedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var graphDigest = runtimeEntityType.AddProperty(
"GraphDigest",
typeof(string),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("GraphDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<GraphDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
graphDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
graphDigest.AddAnnotation("Relational:ColumnName", "graph_digest");
var language = runtimeEntityType.AddProperty(
"Language",
typeof(string),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("Language", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<Language>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
language.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
language.AddAnnotation("Relational:ColumnName", "language");
var reachableNodeCount = runtimeEntityType.AddProperty(
"ReachableNodeCount",
typeof(int),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("ReachableNodeCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<ReachableNodeCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
reachableNodeCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reachableNodeCount.AddAnnotation("Relational:ColumnName", "reachable_node_count");
var reachableSinkCount = runtimeEntityType.AddProperty(
"ReachableSinkCount",
typeof(int),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("ReachableSinkCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<ReachableSinkCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
reachableSinkCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reachableSinkCount.AddAnnotation("Relational:ColumnName", "reachable_sink_count");
var resultDigest = runtimeEntityType.AddProperty(
"ResultDigest",
typeof(string),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("ResultDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<ResultDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
resultDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
resultDigest.AddAnnotation("Relational:ColumnName", "result_digest");
var resultJson = runtimeEntityType.AddProperty(
"ResultJson",
typeof(string),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("ResultJson", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<ResultJson>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
resultJson.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
resultJson.AddAnnotation("Relational:ColumnName", "result_json");
resultJson.AddAnnotation("Relational:ColumnType", "jsonb");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(string),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(ReachabilityResultEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ReachabilityResultEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, language });
index.AddAnnotation("Relational:Name", "idx_reachability_results_tenant_scan");
var index0 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, language, graphDigest, resultDigest },
unique: true);
index0.AddAnnotation("Relational:Name", "reachability_result_unique_per_scan");
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", "reachability_results");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,213 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class RiskStateSnapshotEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.RiskStateSnapshotEntity",
typeof(RiskStateSnapshotEntity),
baseEntityType,
propertyCount: 16,
unnamedIndexCount: 4,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var capturedAt = runtimeEntityType.AddProperty(
"CapturedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("CapturedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<CapturedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
capturedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
capturedAt.AddAnnotation("Relational:ColumnName", "captured_at");
capturedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var epssScore = runtimeEntityType.AddProperty(
"EpssScore",
typeof(decimal?),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("EpssScore", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<EpssScore>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
epssScore.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
epssScore.AddAnnotation("Relational:ColumnName", "epss_score");
epssScore.AddAnnotation("Relational:ColumnType", "numeric(5,4)");
var inAffectedRange = runtimeEntityType.AddProperty(
"InAffectedRange",
typeof(bool?),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("InAffectedRange", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<InAffectedRange>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
inAffectedRange.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
inAffectedRange.AddAnnotation("Relational:ColumnName", "in_affected_range");
var kev = runtimeEntityType.AddProperty(
"Kev",
typeof(bool),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("Kev", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<Kev>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
kev.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
kev.AddAnnotation("Relational:ColumnName", "kev");
var latticeState = runtimeEntityType.AddProperty(
"LatticeState",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("LatticeState", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<LatticeState>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
latticeState.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
latticeState.AddAnnotation("Relational:ColumnName", "lattice_state");
var policyDecision = runtimeEntityType.AddProperty(
"PolicyDecision",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("PolicyDecision", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<PolicyDecision>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
policyDecision.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyDecision.AddAnnotation("Relational:ColumnName", "policy_decision");
var policyFlags = runtimeEntityType.AddProperty(
"PolicyFlags",
typeof(string[]),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("PolicyFlags", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<PolicyFlags>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
var policyFlagsElementType = policyFlags.SetElementType(typeof(string));
policyFlags.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyFlags.AddAnnotation("Relational:ColumnName", "policy_flags");
var purl = runtimeEntityType.AddProperty(
"Purl",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("Purl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<Purl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
purl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
purl.AddAnnotation("Relational:ColumnName", "purl");
var reachable = runtimeEntityType.AddProperty(
"Reachable",
typeof(bool?),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("Reachable", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<Reachable>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reachable.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reachable.AddAnnotation("Relational:ColumnName", "reachable");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var stateHash = runtimeEntityType.AddProperty(
"StateHash",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("StateHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<StateHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
stateHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
stateHash.AddAnnotation("Relational:ColumnName", "state_hash");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var vexStatus = runtimeEntityType.AddProperty(
"VexStatus",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("VexStatus", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<VexStatus>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
vexStatus.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexStatus.AddAnnotation("Relational:ColumnName", "vex_status");
var vulnId = runtimeEntityType.AddProperty(
"VulnId",
typeof(string),
propertyInfo: typeof(RiskStateSnapshotEntity).GetProperty("VulnId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(RiskStateSnapshotEntity).GetField("<VulnId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
vulnId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vulnId.AddAnnotation("Relational:ColumnName", "vuln_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { scanId });
index.AddAnnotation("Relational:Name", "idx_risk_state_scan");
var index0 = runtimeEntityType.AddIndex(
new[] { stateHash });
index0.AddAnnotation("Relational:Name", "idx_risk_state_hash");
var index1 = runtimeEntityType.AddIndex(
new[] { tenantId, vulnId, purl });
index1.AddAnnotation("Relational:Name", "idx_risk_state_tenant_finding");
var index2 = runtimeEntityType.AddIndex(
new[] { tenantId, scanId, vulnId, purl },
unique: true);
index2.AddAnnotation("Relational:Name", "risk_state_unique_per_scan");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "risk_state_snapshots");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,173 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class ScanManifestEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.ScanManifestEntity",
typeof(ScanManifestEntity),
baseEntityType,
propertyCount: 12,
unnamedIndexCount: 3,
keyCount: 1);
var manifestId = runtimeEntityType.AddProperty(
"ManifestId",
typeof(Guid),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ManifestId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ManifestId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
manifestId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
manifestId.AddAnnotation("Relational:ColumnName", "manifest_id");
manifestId.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ScanManifestEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "now()");
var feedHash = runtimeEntityType.AddProperty(
"FeedHash",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("FeedHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<FeedHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 128);
feedHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
feedHash.AddAnnotation("Relational:ColumnName", "feed_hash");
var manifestContent = runtimeEntityType.AddProperty(
"ManifestContent",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ManifestContent", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ManifestContent>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
manifestContent.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
manifestContent.AddAnnotation("Relational:ColumnName", "manifest_content");
manifestContent.AddAnnotation("Relational:ColumnType", "jsonb");
var manifestHash = runtimeEntityType.AddProperty(
"ManifestHash",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ManifestHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ManifestHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 128);
manifestHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
manifestHash.AddAnnotation("Relational:ColumnName", "manifest_hash");
var policyHash = runtimeEntityType.AddProperty(
"PolicyHash",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("PolicyHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<PolicyHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 128);
policyHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyHash.AddAnnotation("Relational:ColumnName", "policy_hash");
var rulesHash = runtimeEntityType.AddProperty(
"RulesHash",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("RulesHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<RulesHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 128);
rulesHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rulesHash.AddAnnotation("Relational:ColumnName", "rules_hash");
var sbomHash = runtimeEntityType.AddProperty(
"SbomHash",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("SbomHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<SbomHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 128);
sbomHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sbomHash.AddAnnotation("Relational:ColumnName", "sbom_hash");
var scanCompletedAt = runtimeEntityType.AddProperty(
"ScanCompletedAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ScanCompletedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ScanCompletedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
scanCompletedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanCompletedAt.AddAnnotation("Relational:ColumnName", "scan_completed_at");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(Guid),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var scanStartedAt = runtimeEntityType.AddProperty(
"ScanStartedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ScanStartedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ScanStartedAt>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)));
scanStartedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanStartedAt.AddAnnotation("Relational:ColumnName", "scan_started_at");
var scannerVersion = runtimeEntityType.AddProperty(
"ScannerVersion",
typeof(string),
propertyInfo: typeof(ScanManifestEntity).GetProperty("ScannerVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanManifestEntity).GetField("<ScannerVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 64);
scannerVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scannerVersion.AddAnnotation("Relational:ColumnName", "scanner_version");
var key = runtimeEntityType.AddKey(
new[] { manifestId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { createdAt });
index.AddAnnotation("Relational:Name", "idx_scan_manifest_created_at");
var index0 = runtimeEntityType.AddIndex(
new[] { manifestHash });
index0.AddAnnotation("Relational:Name", "idx_scan_manifest_hash");
var index1 = runtimeEntityType.AddIndex(
new[] { scanId });
index1.AddAnnotation("Relational:Name", "idx_scan_manifest_scan_id");
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", "scan_manifest");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,322 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class ScanMetricsEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.ScanMetricsEntity",
typeof(ScanMetricsEntity),
baseEntityType,
propertyCount: 28,
unnamedIndexCount: 5,
keyCount: 1);
var metricsId = runtimeEntityType.AddProperty(
"MetricsId",
typeof(Guid),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("MetricsId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<MetricsId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
metricsId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
metricsId.AddAnnotation("Relational:ColumnName", "metrics_id");
metricsId.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var artifactDigest = runtimeEntityType.AddProperty(
"ArtifactDigest",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ArtifactDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ArtifactDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
artifactDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
artifactDigest.AddAnnotation("Relational:ColumnName", "artifact_digest");
var artifactType = runtimeEntityType.AddProperty(
"ArtifactType",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ArtifactType", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ArtifactType>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
artifactType.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
artifactType.AddAnnotation("Relational:ColumnName", "artifact_type");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var feedSnapshotId = runtimeEntityType.AddProperty(
"FeedSnapshotId",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("FeedSnapshotId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<FeedSnapshotId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
feedSnapshotId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
feedSnapshotId.AddAnnotation("Relational:ColumnName", "feed_snapshot_id");
var findingCount = runtimeEntityType.AddProperty(
"FindingCount",
typeof(int?),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("FindingCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<FindingCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
findingCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingCount.AddAnnotation("Relational:ColumnName", "finding_count");
var findingsSha256 = runtimeEntityType.AddProperty(
"FindingsSha256",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("FindingsSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<FindingsSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
findingsSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
findingsSha256.AddAnnotation("Relational:ColumnName", "findings_sha256");
var finishedAt = runtimeEntityType.AddProperty(
"FinishedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("FinishedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<FinishedAt>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)));
finishedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
finishedAt.AddAnnotation("Relational:ColumnName", "finished_at");
var isReplay = runtimeEntityType.AddProperty(
"IsReplay",
typeof(bool),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("IsReplay", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<IsReplay>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
isReplay.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
isReplay.AddAnnotation("Relational:ColumnName", "is_replay");
var packageCount = runtimeEntityType.AddProperty(
"PackageCount",
typeof(int?),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("PackageCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<PackageCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
packageCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
packageCount.AddAnnotation("Relational:ColumnName", "package_count");
var policyDigest = runtimeEntityType.AddProperty(
"PolicyDigest",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("PolicyDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<PolicyDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
policyDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
policyDigest.AddAnnotation("Relational:ColumnName", "policy_digest");
var proofBundleSha256 = runtimeEntityType.AddProperty(
"ProofBundleSha256",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ProofBundleSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ProofBundleSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
proofBundleSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
proofBundleSha256.AddAnnotation("Relational:ColumnName", "proof_bundle_sha256");
var replayManifestHash = runtimeEntityType.AddProperty(
"ReplayManifestHash",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ReplayManifestHash", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ReplayManifestHash>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
replayManifestHash.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
replayManifestHash.AddAnnotation("Relational:ColumnName", "replay_manifest_hash");
var sbomSha256 = runtimeEntityType.AddProperty(
"SbomSha256",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("SbomSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<SbomSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
sbomSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
sbomSha256.AddAnnotation("Relational:ColumnName", "sbom_sha256");
var scanId = runtimeEntityType.AddProperty(
"ScanId",
typeof(Guid),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ScanId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ScanId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
scanId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanId.AddAnnotation("Relational:ColumnName", "scan_id");
var scannerImageDigest = runtimeEntityType.AddProperty(
"ScannerImageDigest",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ScannerImageDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ScannerImageDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
scannerImageDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scannerImageDigest.AddAnnotation("Relational:ColumnName", "scanner_image_digest");
var scannerVersion = runtimeEntityType.AddProperty(
"ScannerVersion",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("ScannerVersion", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<ScannerVersion>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
scannerVersion.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scannerVersion.AddAnnotation("Relational:ColumnName", "scanner_version");
var startedAt = runtimeEntityType.AddProperty(
"StartedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("StartedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).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 surfaceId = runtimeEntityType.AddProperty(
"SurfaceId",
typeof(Guid?),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("SurfaceId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<SurfaceId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
surfaceId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
surfaceId.AddAnnotation("Relational:ColumnName", "surface_id");
var tAnalyzeMs = runtimeEntityType.AddProperty(
"TAnalyzeMs",
typeof(int),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TAnalyzeMs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TAnalyzeMs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
tAnalyzeMs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tAnalyzeMs.AddAnnotation("Relational:ColumnName", "t_analyze_ms");
var tIngestMs = runtimeEntityType.AddProperty(
"TIngestMs",
typeof(int),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TIngestMs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TIngestMs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
tIngestMs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tIngestMs.AddAnnotation("Relational:ColumnName", "t_ingest_ms");
var tPublishMs = runtimeEntityType.AddProperty(
"TPublishMs",
typeof(int),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TPublishMs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TPublishMs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
tPublishMs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tPublishMs.AddAnnotation("Relational:ColumnName", "t_publish_ms");
var tReachabilityMs = runtimeEntityType.AddProperty(
"TReachabilityMs",
typeof(int),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TReachabilityMs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TReachabilityMs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
tReachabilityMs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tReachabilityMs.AddAnnotation("Relational:ColumnName", "t_reachability_ms");
var tSignMs = runtimeEntityType.AddProperty(
"TSignMs",
typeof(int),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TSignMs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TSignMs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
tSignMs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tSignMs.AddAnnotation("Relational:ColumnName", "t_sign_ms");
var tVexMs = runtimeEntityType.AddProperty(
"TVexMs",
typeof(int),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TVexMs", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TVexMs>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
tVexMs.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tVexMs.AddAnnotation("Relational:ColumnName", "t_vex_ms");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var vexBundleSha256 = runtimeEntityType.AddProperty(
"VexBundleSha256",
typeof(string),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("VexBundleSha256", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<VexBundleSha256>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexBundleSha256.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexBundleSha256.AddAnnotation("Relational:ColumnName", "vex_bundle_sha256");
var vexDecisionCount = runtimeEntityType.AddProperty(
"VexDecisionCount",
typeof(int?),
propertyInfo: typeof(ScanMetricsEntity).GetProperty("VexDecisionCount", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(ScanMetricsEntity).GetField("<VexDecisionCount>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
vexDecisionCount.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vexDecisionCount.AddAnnotation("Relational:ColumnName", "vex_decision_count");
var key = runtimeEntityType.AddKey(
new[] { metricsId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { artifactDigest });
index.AddAnnotation("Relational:Name", "idx_scan_metrics_artifact");
var index0 = runtimeEntityType.AddIndex(
new[] { scanId },
unique: true);
index0.AddAnnotation("Relational:Name", "scan_metrics_scan_id_key");
var index1 = runtimeEntityType.AddIndex(
new[] { startedAt });
index1.AddAnnotation("Relational:Name", "idx_scan_metrics_started");
var index2 = runtimeEntityType.AddIndex(
new[] { tenantId });
index2.AddAnnotation("Relational:Name", "idx_scan_metrics_tenant");
var index3 = runtimeEntityType.AddIndex(
new[] { tenantId, startedAt });
index3.AddAnnotation("Relational:Name", "idx_scan_metrics_tenant_started");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "scan_metrics");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -1,4 +1,4 @@
// <auto-generated />
// <auto-generated />
using Microsoft.EntityFrameworkCore.Infrastructure;
using StellaOps.Scanner.Storage.EfCore.CompiledModels;
using StellaOps.Scanner.Storage.EfCore.Context;

View File

@@ -1,4 +1,4 @@
// <auto-generated />
// <auto-generated />
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using StellaOps.Scanner.Storage.EfCore.Context;

View File

@@ -1,4 +1,4 @@
// <auto-generated />
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
@@ -12,13 +12,68 @@ namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
public partial class ScannerDbContextModel
{
private ScannerDbContextModel()
: base(skipDetectChanges: false, modelId: new Guid("b2a4e1c7-8d3f-4a5b-9e6c-1f7d2e8b3c4a"), entityTypeCount: 13)
: base(skipDetectChanges: false, modelId: new Guid("95fb3b9d-4b18-4f30-a494-86e0f706c117"), entityTypeCount: 24)
{
}
partial void Initialize()
{
// Stub: entity types will be populated by `dotnet ef dbcontext optimize`.
var artifactBomEntity = ArtifactBomEntityEntityType.Create(this);
var binaryIdentityEntity = BinaryIdentityEntityEntityType.Create(this);
var binaryPackageMapEntity = BinaryPackageMapEntityEntityType.Create(this);
var binaryVulnAssertionEntity = BinaryVulnAssertionEntityEntityType.Create(this);
var callGraphSnapshotEntity = CallGraphSnapshotEntityEntityType.Create(this);
var codeChangeEntity = CodeChangeEntityEntityType.Create(this);
var driftedSinkEntity = DriftedSinkEntityEntityType.Create(this);
var epssRawEntity = EpssRawEntityEntityType.Create(this);
var epssSignalConfigEntity = EpssSignalConfigEntityEntityType.Create(this);
var epssSignalEntity = EpssSignalEntityEntityType.Create(this);
var facetSealEntity = FacetSealEntityEntityType.Create(this);
var funcNodeEntity = FuncNodeEntityEntityType.Create(this);
var funcProofEntity = FuncProofEntityEntityType.Create(this);
var funcTraceEntity = FuncTraceEntityEntityType.Create(this);
var idempotencyKeyEntity = IdempotencyKeyEntityEntityType.Create(this);
var materialRiskChangeEntity = MaterialRiskChangeEntityEntityType.Create(this);
var proofBundleEntity = ProofBundleEntityEntityType.Create(this);
var reachabilityDriftResultEntity = ReachabilityDriftResultEntityEntityType.Create(this);
var reachabilityResultEntity = ReachabilityResultEntityEntityType.Create(this);
var riskStateSnapshotEntity = RiskStateSnapshotEntityEntityType.Create(this);
var scanManifestEntity = ScanManifestEntityEntityType.Create(this);
var scanMetricsEntity = ScanMetricsEntityEntityType.Create(this);
var secretDetectionSettingsEntity = SecretDetectionSettingsEntityEntityType.Create(this);
var vexCandidateEntity = VexCandidateEntityEntityType.Create(this);
BinaryPackageMapEntityEntityType.CreateForeignKey1(binaryPackageMapEntity, binaryIdentityEntity);
BinaryVulnAssertionEntityEntityType.CreateForeignKey1(binaryVulnAssertionEntity, binaryIdentityEntity);
DriftedSinkEntityEntityType.CreateForeignKey1(driftedSinkEntity, reachabilityDriftResultEntity);
FuncNodeEntityEntityType.CreateForeignKey1(funcNodeEntity, funcProofEntity);
FuncTraceEntityEntityType.CreateForeignKey1(funcTraceEntity, funcProofEntity);
ArtifactBomEntityEntityType.CreateAnnotations(artifactBomEntity);
BinaryIdentityEntityEntityType.CreateAnnotations(binaryIdentityEntity);
BinaryPackageMapEntityEntityType.CreateAnnotations(binaryPackageMapEntity);
BinaryVulnAssertionEntityEntityType.CreateAnnotations(binaryVulnAssertionEntity);
CallGraphSnapshotEntityEntityType.CreateAnnotations(callGraphSnapshotEntity);
CodeChangeEntityEntityType.CreateAnnotations(codeChangeEntity);
DriftedSinkEntityEntityType.CreateAnnotations(driftedSinkEntity);
EpssRawEntityEntityType.CreateAnnotations(epssRawEntity);
EpssSignalConfigEntityEntityType.CreateAnnotations(epssSignalConfigEntity);
EpssSignalEntityEntityType.CreateAnnotations(epssSignalEntity);
FacetSealEntityEntityType.CreateAnnotations(facetSealEntity);
FuncNodeEntityEntityType.CreateAnnotations(funcNodeEntity);
FuncProofEntityEntityType.CreateAnnotations(funcProofEntity);
FuncTraceEntityEntityType.CreateAnnotations(funcTraceEntity);
IdempotencyKeyEntityEntityType.CreateAnnotations(idempotencyKeyEntity);
MaterialRiskChangeEntityEntityType.CreateAnnotations(materialRiskChangeEntity);
ProofBundleEntityEntityType.CreateAnnotations(proofBundleEntity);
ReachabilityDriftResultEntityEntityType.CreateAnnotations(reachabilityDriftResultEntity);
ReachabilityResultEntityEntityType.CreateAnnotations(reachabilityResultEntity);
RiskStateSnapshotEntityEntityType.CreateAnnotations(riskStateSnapshotEntity);
ScanManifestEntityEntityType.CreateAnnotations(scanManifestEntity);
ScanMetricsEntityEntityType.CreateAnnotations(scanMetricsEntity);
SecretDetectionSettingsEntityEntityType.CreateAnnotations(secretDetectionSettingsEntity);
VexCandidateEntityEntityType.CreateAnnotations(vexCandidateEntity);
AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
AddAnnotation("ProductVersion", "10.0.0");
AddAnnotation("Relational:MaxIdentifierLength", 63);

View File

@@ -0,0 +1,210 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class SecretDetectionSettingsEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.SecretDetectionSettingsEntity",
typeof(SecretDetectionSettingsEntity),
baseEntityType,
propertyCount: 16,
unnamedIndexCount: 1,
keyCount: 1);
var settingsId = runtimeEntityType.AddProperty(
"SettingsId",
typeof(Guid),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("SettingsId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<SettingsId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
afterSaveBehavior: PropertySaveBehavior.Throw,
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
settingsId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
settingsId.AddAnnotation("Relational:ColumnName", "settings_id");
settingsId.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var alertSettings = runtimeEntityType.AddProperty(
"AlertSettings",
typeof(string),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("AlertSettings", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<AlertSettings>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
alertSettings.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
alertSettings.AddAnnotation("Relational:ColumnName", "alert_settings");
alertSettings.AddAnnotation("Relational:ColumnType", "jsonb");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var disabledRuleIds = runtimeEntityType.AddProperty(
"DisabledRuleIds",
typeof(string[]),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("DisabledRuleIds", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<DisabledRuleIds>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
var disabledRuleIdsElementType = disabledRuleIds.SetElementType(typeof(string));
disabledRuleIds.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
disabledRuleIds.AddAnnotation("Relational:ColumnName", "disabled_rule_ids");
var enabled = runtimeEntityType.AddProperty(
"Enabled",
typeof(bool),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("Enabled", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<Enabled>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
enabled.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
enabled.AddAnnotation("Relational:ColumnName", "enabled");
var enabledRuleCategories = runtimeEntityType.AddProperty(
"EnabledRuleCategories",
typeof(string[]),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("EnabledRuleCategories", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<EnabledRuleCategories>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
var enabledRuleCategoriesElementType = enabledRuleCategories.SetElementType(typeof(string));
enabledRuleCategories.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
enabledRuleCategories.AddAnnotation("Relational:ColumnName", "enabled_rule_categories");
var excludedFileExtensions = runtimeEntityType.AddProperty(
"ExcludedFileExtensions",
typeof(string[]),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("ExcludedFileExtensions", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<ExcludedFileExtensions>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
var excludedFileExtensionsElementType = excludedFileExtensions.SetElementType(typeof(string));
excludedFileExtensions.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
excludedFileExtensions.AddAnnotation("Relational:ColumnName", "excluded_file_extensions");
var excludedPaths = runtimeEntityType.AddProperty(
"ExcludedPaths",
typeof(string[]),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("ExcludedPaths", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<ExcludedPaths>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
var excludedPathsElementType = excludedPaths.SetElementType(typeof(string));
excludedPaths.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
excludedPaths.AddAnnotation("Relational:ColumnName", "excluded_paths");
var maxFileSizeBytes = runtimeEntityType.AddProperty(
"MaxFileSizeBytes",
typeof(long),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("MaxFileSizeBytes", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<MaxFileSizeBytes>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0L);
maxFileSizeBytes.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
maxFileSizeBytes.AddAnnotation("Relational:ColumnName", "max_file_size_bytes");
var requireSignedRuleBundles = runtimeEntityType.AddProperty(
"RequireSignedRuleBundles",
typeof(bool),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("RequireSignedRuleBundles", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<RequireSignedRuleBundles>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
requireSignedRuleBundles.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
requireSignedRuleBundles.AddAnnotation("Relational:ColumnName", "require_signed_rule_bundles");
var revelationPolicy = runtimeEntityType.AddProperty(
"RevelationPolicy",
typeof(string),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("RevelationPolicy", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<RevelationPolicy>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
revelationPolicy.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
revelationPolicy.AddAnnotation("Relational:ColumnName", "revelation_policy");
revelationPolicy.AddAnnotation("Relational:ColumnType", "jsonb");
var scanBinaryFiles = runtimeEntityType.AddProperty(
"ScanBinaryFiles",
typeof(bool),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("ScanBinaryFiles", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<ScanBinaryFiles>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
scanBinaryFiles.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
scanBinaryFiles.AddAnnotation("Relational:ColumnName", "scan_binary_files");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var updatedAt = runtimeEntityType.AddProperty(
"UpdatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("UpdatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<UpdatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
updatedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var updatedBy = runtimeEntityType.AddProperty(
"UpdatedBy",
typeof(string),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("UpdatedBy", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<UpdatedBy>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
updatedBy.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
updatedBy.AddAnnotation("Relational:ColumnName", "updated_by");
var version = runtimeEntityType.AddProperty(
"Version",
typeof(int),
propertyInfo: typeof(SecretDetectionSettingsEntity).GetProperty("Version", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(SecretDetectionSettingsEntity).GetField("<Version>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0);
version.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
version.AddAnnotation("Relational:ColumnName", "version");
var key = runtimeEntityType.AddKey(
new[] { settingsId });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { tenantId },
unique: true);
index.AddAnnotation("Relational:Name", "secret_detection_settings_tenant_id_key");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "secret_detection_settings");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -0,0 +1,235 @@
// <auto-generated />
using System;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using StellaOps.Scanner.Storage.EfCore.Models;
#pragma warning disable 219, 612, 618
#nullable disable
namespace StellaOps.Scanner.Storage.EfCore.CompiledModels
{
[EntityFrameworkInternal]
public partial class VexCandidateEntityEntityType
{
public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null)
{
var runtimeEntityType = model.AddEntityType(
"StellaOps.Scanner.Storage.EfCore.Models.VexCandidateEntity",
typeof(VexCandidateEntity),
baseEntityType,
propertyCount: 19,
unnamedIndexCount: 3,
keyCount: 1);
var id = runtimeEntityType.AddProperty(
"Id",
typeof(Guid),
propertyInfo: typeof(VexCandidateEntity).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).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");
id.AddAnnotation("Relational:DefaultValueSql", "gen_random_uuid()");
var candidateId = runtimeEntityType.AddProperty(
"CandidateId",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("CandidateId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<CandidateId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
candidateId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
candidateId.AddAnnotation("Relational:ColumnName", "candidate_id");
var confidence = runtimeEntityType.AddProperty(
"Confidence",
typeof(decimal),
propertyInfo: typeof(VexCandidateEntity).GetProperty("Confidence", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<Confidence>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: 0m);
confidence.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
confidence.AddAnnotation("Relational:ColumnName", "confidence");
confidence.AddAnnotation("Relational:ColumnType", "numeric(4,3)");
var createdAt = runtimeEntityType.AddProperty(
"CreatedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(VexCandidateEntity).GetProperty("CreatedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<CreatedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
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");
createdAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var evidenceLinks = runtimeEntityType.AddProperty(
"EvidenceLinks",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("EvidenceLinks", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<EvidenceLinks>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
evidenceLinks.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
evidenceLinks.AddAnnotation("Relational:ColumnName", "evidence_links");
evidenceLinks.AddAnnotation("Relational:ColumnType", "jsonb");
var expiresAt = runtimeEntityType.AddProperty(
"ExpiresAt",
typeof(DateTimeOffset),
propertyInfo: typeof(VexCandidateEntity).GetProperty("ExpiresAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<ExpiresAt>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)));
expiresAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
expiresAt.AddAnnotation("Relational:ColumnName", "expires_at");
var generatedAt = runtimeEntityType.AddProperty(
"GeneratedAt",
typeof(DateTimeOffset),
propertyInfo: typeof(VexCandidateEntity).GetProperty("GeneratedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<GeneratedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: new DateTimeOffset(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 0, 0, 0, 0)));
generatedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
generatedAt.AddAnnotation("Relational:ColumnName", "generated_at");
generatedAt.AddAnnotation("Relational:DefaultValueSql", "NOW()");
var imageDigest = runtimeEntityType.AddProperty(
"ImageDigest",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("ImageDigest", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<ImageDigest>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
imageDigest.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
imageDigest.AddAnnotation("Relational:ColumnName", "image_digest");
var justification = runtimeEntityType.AddProperty(
"Justification",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("Justification", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<Justification>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
justification.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
justification.AddAnnotation("Relational:ColumnName", "justification");
var purl = runtimeEntityType.AddProperty(
"Purl",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("Purl", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<Purl>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
purl.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
purl.AddAnnotation("Relational:ColumnName", "purl");
var rationale = runtimeEntityType.AddProperty(
"Rationale",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("Rationale", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<Rationale>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
rationale.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
rationale.AddAnnotation("Relational:ColumnName", "rationale");
var requiresReview = runtimeEntityType.AddProperty(
"RequiresReview",
typeof(bool),
propertyInfo: typeof(VexCandidateEntity).GetProperty("RequiresReview", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<RequiresReview>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
valueGenerated: ValueGenerated.OnAdd,
sentinel: true);
requiresReview.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
requiresReview.AddAnnotation("Relational:ColumnName", "requires_review");
requiresReview.AddAnnotation("Relational:DefaultValue", true);
var reviewAction = runtimeEntityType.AddProperty(
"ReviewAction",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("ReviewAction", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<ReviewAction>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reviewAction.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reviewAction.AddAnnotation("Relational:ColumnName", "review_action");
var reviewComment = runtimeEntityType.AddProperty(
"ReviewComment",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("ReviewComment", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<ReviewComment>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reviewComment.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reviewComment.AddAnnotation("Relational:ColumnName", "review_comment");
var reviewedAt = runtimeEntityType.AddProperty(
"ReviewedAt",
typeof(DateTimeOffset?),
propertyInfo: typeof(VexCandidateEntity).GetProperty("ReviewedAt", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<ReviewedAt>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reviewedAt.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reviewedAt.AddAnnotation("Relational:ColumnName", "reviewed_at");
var reviewedBy = runtimeEntityType.AddProperty(
"ReviewedBy",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("ReviewedBy", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<ReviewedBy>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
nullable: true);
reviewedBy.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
reviewedBy.AddAnnotation("Relational:ColumnName", "reviewed_by");
var suggestedStatus = runtimeEntityType.AddProperty(
"SuggestedStatus",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("SuggestedStatus", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<SuggestedStatus>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
suggestedStatus.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
suggestedStatus.AddAnnotation("Relational:ColumnName", "suggested_status");
var tenantId = runtimeEntityType.AddProperty(
"TenantId",
typeof(Guid),
propertyInfo: typeof(VexCandidateEntity).GetProperty("TenantId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<TenantId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: new Guid("00000000-0000-0000-0000-000000000000"));
tenantId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
tenantId.AddAnnotation("Relational:ColumnName", "tenant_id");
var vulnId = runtimeEntityType.AddProperty(
"VulnId",
typeof(string),
propertyInfo: typeof(VexCandidateEntity).GetProperty("VulnId", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
fieldInfo: typeof(VexCandidateEntity).GetField("<VulnId>k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly));
vulnId.AddAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.None);
vulnId.AddAnnotation("Relational:ColumnName", "vuln_id");
var key = runtimeEntityType.AddKey(
new[] { id });
runtimeEntityType.SetPrimaryKey(key);
var index = runtimeEntityType.AddIndex(
new[] { candidateId },
unique: true);
index.AddAnnotation("Relational:Name", "vex_candidates_candidate_id_key");
var index0 = runtimeEntityType.AddIndex(
new[] { expiresAt });
index0.AddAnnotation("Relational:Name", "idx_vex_candidates_expires");
var index1 = runtimeEntityType.AddIndex(
new[] { tenantId, imageDigest });
index1.AddAnnotation("Relational:Name", "idx_vex_candidates_tenant_image");
return runtimeEntityType;
}
public static void CreateAnnotations(RuntimeEntityType runtimeEntityType)
{
runtimeEntityType.AddAnnotation("Relational:FunctionName", null);
runtimeEntityType.AddAnnotation("Relational:Schema", "scanner");
runtimeEntityType.AddAnnotation("Relational:SqlQuery", null);
runtimeEntityType.AddAnnotation("Relational:TableName", "vex_candidates");
runtimeEntityType.AddAnnotation("Relational:ViewName", null);
runtimeEntityType.AddAnnotation("Relational:ViewSchema", null);
Customize(runtimeEntityType);
}
static partial void Customize(RuntimeEntityType runtimeEntityType);
}
}

View File

@@ -33,9 +33,12 @@ public sealed class PostgresArtifactBomRepository : IArtifactBomRepository
ArgumentException.ThrowIfNullOrWhiteSpace(row.CanonicalBomSha256);
ArgumentException.ThrowIfNullOrWhiteSpace(row.PayloadDigest);
var insertedAt = row.InsertedAt == default
var insertedAtRaw = row.InsertedAt == default
? DateTimeOffset.UtcNow
: row.InsertedAt.ToUniversalTime();
// PostgreSQL stores timestamps with microsecond precision; truncate to avoid round-trip mismatch
var insertedAt = new DateTimeOffset(
insertedAtRaw.Ticks / 10 * 10, insertedAtRaw.Offset);
var monthStart = new DateTimeOffset(insertedAt.Year, insertedAt.Month, 1, 0, 0, 0, TimeSpan.Zero);
var monthEnd = monthStart.AddMonths(1);

View File

@@ -174,11 +174,11 @@ public sealed class PostgresBinaryEvidenceRepository : IBinaryEvidenceRepository
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var result = await dbContext.Database.SqlQueryRaw<PackageMapInsertResult>(
var result = (await dbContext.Database.SqlQueryRaw<PackageMapInsertResult>(
sql, map.BinaryIdentityId, map.Purl, map.MatchType, map.Confidence,
map.MatchSource, (object?)map.EvidenceJson ?? DBNull.Value)
.FirstAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).First();
map.Id = result.id;
map.CreatedAtUtc = result.created_at_utc;
@@ -243,14 +243,14 @@ public sealed class PostgresBinaryEvidenceRepository : IBinaryEvidenceRepository
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var result = await dbContext.Database.SqlQueryRaw<VulnAssertionInsertResult>(
var result = (await dbContext.Database.SqlQueryRaw<VulnAssertionInsertResult>(
sql, assertion.BinaryIdentityId, assertion.VulnId, assertion.Status,
assertion.Source, assertion.AssertionType, assertion.Confidence,
(object?)assertion.EvidenceJson ?? DBNull.Value,
assertion.ValidFrom, (object?)assertion.ValidUntil ?? DBNull.Value,
(object?)assertion.SignatureRef ?? DBNull.Value)
.FirstAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).First();
assertion.Id = result.id;
assertion.CreatedAtUtc = result.created_at_utc;

View File

@@ -83,27 +83,20 @@ public sealed class PostgresCallGraphSnapshotRepository : ICallGraphSnapshotRepo
ArgumentException.ThrowIfNullOrWhiteSpace(language);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT snapshot_json AS "Value"
FROM {CallGraphSnapshotsTable}
WHERE tenant_id = @p0 AND scan_id = @p1 AND language = @p2
ORDER BY extracted_at DESC
LIMIT 1
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var json = await dbContext.Database.SqlQueryRaw<string>(
sql, tenantScope.TenantId, scanId, language)
var entity = await dbContext.CallGraphSnapshots
.Where(e => e.TenantId == tenantScope.TenantId && e.ScanId == scanId && e.Language == language)
.OrderByDescending(e => e.ExtractedAt)
.FirstOrDefaultAsync(ct)
.ConfigureAwait(false);
if (string.IsNullOrWhiteSpace(json))
if (entity is null || string.IsNullOrWhiteSpace(entity.SnapshotJson))
{
return null;
}
return JsonSerializer.Deserialize<CallGraphSnapshot>(json, JsonOptions);
return JsonSerializer.Deserialize<CallGraphSnapshot>(entity.SnapshotJson, JsonOptions);
}
}

View File

@@ -112,10 +112,10 @@ public sealed class PostgresEpssRepository : IEpssRepository
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var row = await dbContext.Database.SqlQueryRaw<ImportRunRow>(
var row = (await dbContext.Database.SqlQueryRaw<ImportRunRow>(
insertSql, modelDate, sourceUri, retrievedAtUtc, fileSha256)
.FirstOrDefaultAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).FirstOrDefault();
if (row is not null)
{
@@ -288,8 +288,8 @@ public sealed class PostgresEpssRepository : IEpssRepository
{
result[row.cve_id] = new EpssCurrentEntry(
row.cve_id,
(double)row.epss_score,
(double)row.percentile,
row.epss_score,
row.percentile,
row.model_date,
row.import_run_id);
}
@@ -600,8 +600,8 @@ public sealed class PostgresEpssRepository : IEpssRepository
private sealed class CurrentRow
{
public string cve_id { get; set; } = "";
public decimal epss_score { get; set; }
public decimal percentile { get; set; }
public double epss_score { get; set; }
public double percentile { get; set; }
public DateOnly model_date { get; set; }
public Guid import_run_id { get; set; }
}

View File

@@ -100,10 +100,12 @@ public sealed class PostgresFuncProofRepository : IFuncProofRepository
@generator_version, @generated_at_utc, @created_at_utc
)
ON CONFLICT (proof_id) DO UPDATE SET
updated_at_utc = NOW()
updated_at_utc = @now
RETURNING id
""";
var now = _timeProvider.GetUtcNow();
await using var conn = await _dataSource.OpenConnectionAsync(ct);
await using var cmd = new NpgsqlCommand(sql, conn);
@@ -121,17 +123,18 @@ public sealed class PostgresFuncProofRepository : IFuncProofRepository
cmd.Parameters.AddWithValue("function_count", document.FunctionCount);
cmd.Parameters.AddWithValue("trace_count", document.TraceCount);
cmd.Parameters.AddWithValue("proof_content", document.ProofContent);
cmd.Parameters.AddWithValue("compressed_content",
cmd.Parameters.AddWithValue("compressed_content",
document.CompressedContent is null ? DBNull.Value : document.CompressedContent);
cmd.Parameters.AddWithValue("dsse_envelope_id",
cmd.Parameters.AddWithValue("dsse_envelope_id",
document.DsseEnvelopeId is null ? DBNull.Value : document.DsseEnvelopeId);
cmd.Parameters.AddWithValue("oci_artifact_digest",
cmd.Parameters.AddWithValue("oci_artifact_digest",
document.OciArtifactDigest is null ? DBNull.Value : document.OciArtifactDigest);
cmd.Parameters.AddWithValue("rekor_entry_id",
cmd.Parameters.AddWithValue("rekor_entry_id",
document.RekorEntryId is null ? DBNull.Value : document.RekorEntryId);
cmd.Parameters.AddWithValue("generator_version", document.GeneratorVersion);
cmd.Parameters.AddWithValue("generated_at_utc", document.GeneratedAtUtc);
cmd.Parameters.AddWithValue("created_at_utc", _timeProvider.GetUtcNow());
cmd.Parameters.AddWithValue("created_at_utc", now);
cmd.Parameters.AddWithValue("now", now);
var result = await cmd.ExecuteScalarAsync(ct);
return result is Guid returnedId ? returnedId : id;
@@ -211,19 +214,22 @@ public sealed class PostgresFuncProofRepository : IFuncProofRepository
SET dsse_envelope_id = @dsse_envelope_id,
oci_artifact_digest = @oci_artifact_digest,
rekor_entry_id = @rekor_entry_id,
updated_at_utc = NOW()
updated_at_utc = @now
WHERE id = @id
""";
var now = _timeProvider.GetUtcNow();
await using var conn = await _dataSource.OpenConnectionAsync(ct);
await using var cmd = new NpgsqlCommand(sql, conn);
cmd.Parameters.AddWithValue("id", id);
cmd.Parameters.AddWithValue("dsse_envelope_id", dsseEnvelopeId);
cmd.Parameters.AddWithValue("oci_artifact_digest",
cmd.Parameters.AddWithValue("oci_artifact_digest",
ociArtifactDigest is null ? DBNull.Value : ociArtifactDigest);
cmd.Parameters.AddWithValue("rekor_entry_id",
cmd.Parameters.AddWithValue("rekor_entry_id",
rekorEntryId is null ? DBNull.Value : rekorEntryId);
cmd.Parameters.AddWithValue("now", now);
await cmd.ExecuteNonQueryAsync(ct);
}

View File

@@ -91,15 +91,15 @@ public sealed class PostgresIdempotencyKeyRepository : IIdempotencyKeyRepository
await using var conn = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(conn, _dataSource.CommandTimeoutSeconds, SchemaName);
var result = await dbContext.Database.SqlQueryRaw<IdempotencyKeyInsertResult>(
var result = (await dbContext.Database.SqlQueryRaw<IdempotencyKeyInsertResult>(
sql,
key.KeyId, key.TenantId, key.ContentDigest, key.EndpointPath,
key.ResponseStatus,
(object?)key.ResponseBody ?? DBNull.Value,
(object?)key.ResponseHeaders ?? DBNull.Value,
key.CreatedAt, key.ExpiresAt)
.FirstAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).First();
key.KeyId = result.key_id;

View File

@@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Npgsql;
using StellaOps.Scanner.SmartDiff.Detection;
using StellaOps.Scanner.Storage.EfCore.Models;
using System.Collections.Immutable;
using System.Text.Json;
@@ -89,25 +90,16 @@ public sealed class PostgresMaterialRiskChangeRepository : IMaterialRiskChangeRe
ArgumentException.ThrowIfNullOrWhiteSpace(scanId);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT
vuln_id, purl, has_material_change, priority_score,
previous_state_hash, current_state_hash, changes
FROM {MaterialRiskChangesTable}
WHERE tenant_id = @p0
AND scan_id = @p1
ORDER BY priority_score DESC
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var rows = await dbContext.Database.SqlQueryRaw<MaterialRiskChangeRow>(
sql, tenantScope.TenantId, scanId.Trim())
var entities = await dbContext.MaterialRiskChanges
.Where(e => e.TenantId == tenantScope.TenantId && e.ScanId == scanId.Trim())
.OrderByDescending(e => e.PriorityScore)
.ToListAsync(ct)
.ConfigureAwait(false);
return rows.Select(r => r.ToResult()).ToList();
return entities.Select(MapEntityToResult).ToList();
}
public async Task<IReadOnlyList<MaterialRiskChangeResult>> GetChangesForFindingAsync(
@@ -120,27 +112,19 @@ public sealed class PostgresMaterialRiskChangeRepository : IMaterialRiskChangeRe
ArgumentOutOfRangeException.ThrowIfLessThan(limit, 1);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT
vuln_id, purl, has_material_change, priority_score,
previous_state_hash, current_state_hash, changes
FROM {MaterialRiskChangesTable}
WHERE tenant_id = @p0
AND vuln_id = @p1
AND purl = @p2
ORDER BY detected_at DESC
LIMIT @p3
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var rows = await dbContext.Database.SqlQueryRaw<MaterialRiskChangeRow>(
sql, tenantScope.TenantId, findingKey.VulnId, findingKey.ComponentPurl, limit)
var entities = await dbContext.MaterialRiskChanges
.Where(e => e.TenantId == tenantScope.TenantId
&& e.VulnId == findingKey.VulnId
&& e.Purl == findingKey.ComponentPurl)
.OrderByDescending(e => e.DetectedAt)
.Take(limit)
.ToListAsync(ct)
.ConfigureAwait(false);
return rows.Select(r => r.ToResult()).ToList();
return entities.Select(MapEntityToResult).ToList();
}
public async Task<MaterialRiskChangeQueryResult> QueryChangesAsync(
@@ -151,63 +135,38 @@ public sealed class PostgresMaterialRiskChangeRepository : IMaterialRiskChangeRe
ArgumentNullException.ThrowIfNull(query);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var conditions = new List<string> { "has_material_change = TRUE" };
var paramList = new List<object>();
var paramIndex = 0;
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
IQueryable<MaterialRiskChangeEntity> baseQuery = dbContext.MaterialRiskChanges
.Where(e => e.TenantId == tenantScope.TenantId && e.HasMaterialChange);
if (query.Since.HasValue)
{
conditions.Add($"detected_at >= @p{paramIndex}");
paramList.Add(query.Since.Value);
paramIndex++;
baseQuery = baseQuery.Where(e => e.DetectedAt >= query.Since.Value);
}
if (query.Until.HasValue)
{
conditions.Add($"detected_at <= @p{paramIndex}");
paramList.Add(query.Until.Value);
paramIndex++;
baseQuery = baseQuery.Where(e => e.DetectedAt <= query.Until.Value);
}
if (query.MinPriorityScore.HasValue)
{
conditions.Add($"priority_score >= @p{paramIndex}");
paramList.Add(query.MinPriorityScore.Value);
paramIndex++;
var minScore = (decimal)query.MinPriorityScore.Value;
baseQuery = baseQuery.Where(e => e.PriorityScore >= minScore);
}
conditions.Add($"tenant_id = @p{paramIndex}");
paramList.Add(tenantScope.TenantId);
paramIndex++;
var totalCount = await baseQuery.CountAsync(ct).ConfigureAwait(false);
var whereClause = string.Join(" AND ", conditions);
var entities = await baseQuery
.OrderByDescending(e => e.PriorityScore)
.Skip(query.Offset)
.Take(query.Limit)
.ToListAsync(ct)
.ConfigureAwait(false);
// Count query
var countSql = $"SELECT COUNT(*) FROM {MaterialRiskChangesTable} WHERE {whereClause}";
// Data query
var dataSql = $"""
SELECT
vuln_id, purl, has_material_change, priority_score,
previous_state_hash, current_state_hash, changes
FROM {MaterialRiskChangesTable}
WHERE {whereClause}
ORDER BY priority_score DESC
OFFSET @p{paramIndex} LIMIT @p{paramIndex + 1}
""";
var dataParams = new List<object>(paramList) { query.Offset, query.Limit };
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var totalCount = await dbContext.Database.SqlQueryRaw<int>(countSql, paramList.ToArray())
.FirstAsync(ct).ConfigureAwait(false);
var rows = await dbContext.Database.SqlQueryRaw<MaterialRiskChangeRow>(dataSql, dataParams.ToArray())
.ToListAsync(ct).ConfigureAwait(false);
var changes = rows.Select(r => r.ToResult()).ToImmutableArray();
var changes = entities.Select(MapEntityToResult).ToImmutableArray();
return new MaterialRiskChangeQueryResult(
Changes: changes,
@@ -260,31 +219,17 @@ public sealed class PostgresMaterialRiskChangeRepository : IMaterialRiskChangeRe
await cmd.ExecuteNonQueryAsync(ct).ConfigureAwait(false);
}
/// <summary>
/// Row mapping class for Dapper.
/// </summary>
private sealed class MaterialRiskChangeRow
private static MaterialRiskChangeResult MapEntityToResult(MaterialRiskChangeEntity entity)
{
public string vuln_id { get; set; } = "";
public string purl { get; set; } = "";
public bool has_material_change { get; set; }
public decimal priority_score { get; set; }
public string previous_state_hash { get; set; } = "";
public string current_state_hash { get; set; } = "";
public string changes { get; set; } = "[]";
var detectedChanges = JsonSerializer.Deserialize<List<DetectedChange>>(entity.Changes, JsonOptions)
?? [];
public MaterialRiskChangeResult ToResult()
{
var detectedChanges = JsonSerializer.Deserialize<List<DetectedChange>>(changes, JsonOptions)
?? [];
return new MaterialRiskChangeResult(
FindingKey: new FindingKey(vuln_id, purl),
HasMaterialChange: has_material_change,
Changes: [.. detectedChanges],
PriorityScore: (double)priority_score,
PreviousStateHash: previous_state_hash,
CurrentStateHash: current_state_hash);
}
return new MaterialRiskChangeResult(
FindingKey: new FindingKey(entity.VulnId, entity.Purl),
HasMaterialChange: entity.HasMaterialChange,
Changes: [.. detectedChanges],
PriorityScore: (double)entity.PriorityScore,
PreviousStateHash: entity.PreviousStateHash,
CurrentStateHash: entity.CurrentStateHash);
}
}

View File

@@ -81,7 +81,7 @@ public sealed class PostgresProofBundleRepository : IProofBundleRepository
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var result = await dbContext.Database.SqlQueryRaw<ProofBundleInsertResult>(
var result = (await dbContext.Database.SqlQueryRaw<ProofBundleInsertResult>(
sql,
bundle.ScanId, bundle.RootHash, bundle.BundleType,
(object?)bundle.DsseEnvelope ?? DBNull.Value,
@@ -94,8 +94,8 @@ public sealed class PostgresProofBundleRepository : IProofBundleRepository
(object?)bundle.SbomHash ?? DBNull.Value,
(object?)bundle.VexHash ?? DBNull.Value,
(object?)bundle.ExpiresAt ?? DBNull.Value)
.FirstAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).First();
bundle.CreatedAt = result.created_at;
return bundle;

View File

@@ -77,27 +77,20 @@ public sealed class PostgresReachabilityResultRepository : IReachabilityResultRe
ArgumentException.ThrowIfNullOrWhiteSpace(language);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT result_json
FROM {ReachabilityResultsTable}
WHERE tenant_id = @p0 AND scan_id = @p1 AND language = @p2
ORDER BY computed_at DESC
LIMIT 1
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var json = await dbContext.Database.SqlQueryRaw<string>(
sql, tenantScope.TenantId, scanId, language)
var entity = await dbContext.ReachabilityResults
.Where(e => e.TenantId == tenantScope.TenantId && e.ScanId == scanId && e.Language == language)
.OrderByDescending(e => e.ComputedAt)
.FirstOrDefaultAsync(ct)
.ConfigureAwait(false);
if (string.IsNullOrWhiteSpace(json))
if (entity is null || string.IsNullOrWhiteSpace(entity.ResultJson))
{
return null;
}
return JsonSerializer.Deserialize<ReachabilityAnalysisResult>(json, JsonOptions);
return JsonSerializer.Deserialize<ReachabilityAnalysisResult>(entity.ResultJson, JsonOptions);
}
}

View File

@@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Npgsql;
using StellaOps.Scanner.SmartDiff.Detection;
using StellaOps.Scanner.Storage.EfCore.Models;
using System.Collections.Immutable;
namespace StellaOps.Scanner.Storage.Postgres;
@@ -71,28 +72,18 @@ public sealed class PostgresRiskStateRepository : IRiskStateRepository
ArgumentNullException.ThrowIfNull(findingKey);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT
vuln_id, purl, scan_id, captured_at,
reachable, lattice_state, vex_status::TEXT AS vex_status, in_affected_range,
kev, epss_score, policy_flags, policy_decision::TEXT AS policy_decision, state_hash
FROM {RiskStateSnapshotsTable}
WHERE tenant_id = @p0
AND vuln_id = @p1
AND purl = @p2
ORDER BY captured_at DESC
LIMIT 1
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var row = await dbContext.Database.SqlQueryRaw<RiskStateRow>(
sql, tenantScope.TenantId, findingKey.VulnId, findingKey.ComponentPurl)
var entity = await dbContext.RiskStateSnapshots
.Where(e => e.TenantId == tenantScope.TenantId
&& e.VulnId == findingKey.VulnId
&& e.Purl == findingKey.ComponentPurl)
.OrderByDescending(e => e.CapturedAt)
.FirstOrDefaultAsync(ct)
.ConfigureAwait(false);
return row?.ToSnapshot();
return entity is not null ? MapEntityToSnapshot(entity) : null;
}
public async Task<IReadOnlyList<RiskStateSnapshot>> GetSnapshotsForScanAsync(string scanId, CancellationToken ct = default, string? tenantId = null)
@@ -100,26 +91,17 @@ public sealed class PostgresRiskStateRepository : IRiskStateRepository
ArgumentException.ThrowIfNullOrWhiteSpace(scanId);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT
vuln_id, purl, scan_id, captured_at,
reachable, lattice_state, vex_status::TEXT AS vex_status, in_affected_range,
kev, epss_score, policy_flags, policy_decision::TEXT AS policy_decision, state_hash
FROM {RiskStateSnapshotsTable}
WHERE tenant_id = @p0
AND scan_id = @p1
ORDER BY vuln_id, purl
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var rows = await dbContext.Database.SqlQueryRaw<RiskStateRow>(
sql, tenantScope.TenantId, scanId.Trim())
var entities = await dbContext.RiskStateSnapshots
.Where(e => e.TenantId == tenantScope.TenantId && e.ScanId == scanId.Trim())
.OrderBy(e => e.VulnId)
.ThenBy(e => e.Purl)
.ToListAsync(ct)
.ConfigureAwait(false);
return rows.Select(r => r.ToSnapshot()).ToList();
return entities.Select(MapEntityToSnapshot).ToList();
}
public async Task<IReadOnlyList<RiskStateSnapshot>> GetSnapshotHistoryAsync(
@@ -132,28 +114,19 @@ public sealed class PostgresRiskStateRepository : IRiskStateRepository
ArgumentOutOfRangeException.ThrowIfLessThan(limit, 1);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT
vuln_id, purl, scan_id, captured_at,
reachable, lattice_state, vex_status::TEXT AS vex_status, in_affected_range,
kev, epss_score, policy_flags, policy_decision::TEXT AS policy_decision, state_hash
FROM {RiskStateSnapshotsTable}
WHERE tenant_id = @p0
AND vuln_id = @p1
AND purl = @p2
ORDER BY captured_at DESC
LIMIT @p3
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var rows = await dbContext.Database.SqlQueryRaw<RiskStateRow>(
sql, tenantScope.TenantId, findingKey.VulnId, findingKey.ComponentPurl, limit)
var entities = await dbContext.RiskStateSnapshots
.Where(e => e.TenantId == tenantScope.TenantId
&& e.VulnId == findingKey.VulnId
&& e.Purl == findingKey.ComponentPurl)
.OrderByDescending(e => e.CapturedAt)
.Take(limit)
.ToListAsync(ct)
.ConfigureAwait(false);
return rows.Select(r => r.ToSnapshot()).ToList();
return entities.Select(MapEntityToSnapshot).ToList();
}
public async Task<IReadOnlyList<RiskStateSnapshot>> GetSnapshotsByHashAsync(string stateHash, CancellationToken ct = default, string? tenantId = null)
@@ -161,26 +134,16 @@ public sealed class PostgresRiskStateRepository : IRiskStateRepository
ArgumentException.ThrowIfNullOrWhiteSpace(stateHash);
var tenantScope = ScannerTenantScope.Resolve(tenantId);
var sql = $"""
SELECT
vuln_id, purl, scan_id, captured_at,
reachable, lattice_state, vex_status::TEXT AS vex_status, in_affected_range,
kev, epss_score, policy_flags, policy_decision::TEXT AS policy_decision, state_hash
FROM {RiskStateSnapshotsTable}
WHERE tenant_id = @p0
AND state_hash = @p1
ORDER BY captured_at DESC
""";
await using var connection = await _dataSource.OpenConnectionAsync(tenantScope.TenantContext, ct).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var rows = await dbContext.Database.SqlQueryRaw<RiskStateRow>(
sql, tenantScope.TenantId, stateHash.Trim())
var entities = await dbContext.RiskStateSnapshots
.Where(e => e.TenantId == tenantScope.TenantId && e.StateHash == stateHash.Trim())
.OrderByDescending(e => e.CapturedAt)
.ToListAsync(ct)
.ConfigureAwait(false);
return rows.Select(r => r.ToSnapshot()).ToList();
return entities.Select(MapEntityToSnapshot).ToList();
}
private async Task InsertSnapshotAsync(
@@ -232,66 +195,47 @@ public sealed class PostgresRiskStateRepository : IRiskStateRepository
await cmd.ExecuteNonQueryAsync(ct).ConfigureAwait(false);
}
/// <summary>
/// Row mapping class for Dapper.
/// </summary>
private sealed class RiskStateRow
private static RiskStateSnapshot MapEntityToSnapshot(RiskStateSnapshotEntity entity)
{
public string vuln_id { get; set; } = "";
public string purl { get; set; } = "";
public string scan_id { get; set; } = "";
public DateTimeOffset captured_at { get; set; }
public bool? reachable { get; set; }
public string? lattice_state { get; set; }
public string vex_status { get; set; } = "unknown";
public bool? in_affected_range { get; set; }
public bool kev { get; set; }
public decimal? epss_score { get; set; }
public string[]? policy_flags { get; set; }
public string? policy_decision { get; set; }
return new RiskStateSnapshot(
FindingKey: new FindingKey(entity.VulnId, entity.Purl),
ScanId: entity.ScanId,
CapturedAt: entity.CapturedAt,
Reachable: entity.Reachable,
LatticeState: entity.LatticeState,
VexStatus: ParseVexStatus(entity.VexStatus),
InAffectedRange: entity.InAffectedRange,
Kev: entity.Kev,
EpssScore: entity.EpssScore.HasValue ? (double)entity.EpssScore.Value : null,
PolicyFlags: entity.PolicyFlags?.ToImmutableArray() ?? [],
PolicyDecision: ParsePolicyDecision(entity.PolicyDecision));
}
public RiskStateSnapshot ToSnapshot()
private static VexStatusType ParseVexStatus(string value)
{
return value.ToLowerInvariant() switch
{
return new RiskStateSnapshot(
FindingKey: new FindingKey(vuln_id, purl),
ScanId: scan_id,
CapturedAt: captured_at,
Reachable: reachable,
LatticeState: lattice_state,
VexStatus: ParseVexStatus(vex_status),
InAffectedRange: in_affected_range,
Kev: kev,
EpssScore: epss_score.HasValue ? (double)epss_score.Value : null,
PolicyFlags: policy_flags?.ToImmutableArray() ?? [],
PolicyDecision: ParsePolicyDecision(policy_decision));
"affected" => VexStatusType.Affected,
"not_affected" => VexStatusType.NotAffected,
"fixed" => VexStatusType.Fixed,
"under_investigation" => VexStatusType.UnderInvestigation,
_ => VexStatusType.Unknown
};
}
private static PolicyDecisionType? ParsePolicyDecision(string? value)
{
if (string.IsNullOrEmpty(value))
{
return null;
}
private static VexStatusType ParseVexStatus(string value)
return value.ToLowerInvariant() switch
{
return value.ToLowerInvariant() switch
{
"affected" => VexStatusType.Affected,
"not_affected" => VexStatusType.NotAffected,
"fixed" => VexStatusType.Fixed,
"under_investigation" => VexStatusType.UnderInvestigation,
_ => VexStatusType.Unknown
};
}
private static PolicyDecisionType? ParsePolicyDecision(string? value)
{
if (string.IsNullOrEmpty(value))
{
return null;
}
return value.ToLowerInvariant() switch
{
"allow" => PolicyDecisionType.Allow,
"warn" => PolicyDecisionType.Warn,
"block" => PolicyDecisionType.Block,
_ => null
};
}
"allow" => PolicyDecisionType.Allow,
"warn" => PolicyDecisionType.Warn,
"block" => PolicyDecisionType.Block,
_ => null
};
}
}

View File

@@ -20,11 +20,13 @@ namespace StellaOps.Scanner.Storage.Postgres;
public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetectionSettingsRepository
{
private readonly ScannerDataSource _dataSource;
private readonly TimeProvider _timeProvider;
private string SchemaName => _dataSource.SchemaName ?? ScannerDataSource.DefaultSchema;
public PostgresSecretDetectionSettingsRepository(ScannerDataSource dataSource)
public PostgresSecretDetectionSettingsRepository(ScannerDataSource dataSource, TimeProvider? timeProvider = null)
{
_dataSource = dataSource ?? throw new ArgumentNullException(nameof(dataSource));
_timeProvider = timeProvider ?? TimeProvider.System;
}
public async Task<SecretDetectionSettingsRow?> GetByTenantAsync(
@@ -65,7 +67,7 @@ public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetection
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var result = await dbContext.Database.SqlQueryRaw<SettingsInsertResult>(
var result = (await dbContext.Database.SqlQueryRaw<SettingsInsertResult>(
sql,
settings.TenantId, settings.Enabled,
(object?)settings.RevelationPolicy ?? DBNull.Value,
@@ -77,8 +79,8 @@ public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetection
(object?)settings.ExcludedPaths ?? DBNull.Value,
settings.ScanBinaryFiles, settings.RequireSignedRuleBundles,
(object?)settings.UpdatedBy ?? DBNull.Value)
.FirstAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).First();
settings.SettingsId = result.settings_id;
settings.Version = result.version;
@@ -94,6 +96,8 @@ public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetection
{
ArgumentNullException.ThrowIfNull(settings);
var now = _timeProvider.GetUtcNow();
// Keep raw SQL for optimistic concurrency + jsonb casts.
var sql = $"""
UPDATE {SchemaName}.secret_detection_settings
@@ -109,7 +113,7 @@ public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetection
scan_binary_files = @p8,
require_signed_rule_bundles = @p9,
version = version + 1,
updated_at = NOW(),
updated_at = @p13,
updated_by = @p10
WHERE settings_id = @p11 AND version = @p12
""";
@@ -130,7 +134,8 @@ public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetection
(object?)settings.ExcludedPaths ?? DBNull.Value,
settings.ScanBinaryFiles, settings.RequireSignedRuleBundles,
(object?)settings.UpdatedBy ?? DBNull.Value,
settings.SettingsId, expectedVersion
settings.SettingsId, expectedVersion,
now
],
cancellationToken)
.ConfigureAwait(false);
@@ -188,19 +193,23 @@ public sealed class PostgresSecretDetectionSettingsRepository : ISecretDetection
public sealed class PostgresSecretExceptionPatternRepository : ISecretExceptionPatternRepository
{
private readonly ScannerDataSource _dataSource;
private readonly TimeProvider _timeProvider;
private string SchemaName => _dataSource.SchemaName ?? ScannerDataSource.DefaultSchema;
private string PatternTableName => $"{SchemaName}.secret_exception_pattern";
private string MatchLogTableName => $"{SchemaName}.secret_exception_match_log";
public PostgresSecretExceptionPatternRepository(ScannerDataSource dataSource)
public PostgresSecretExceptionPatternRepository(ScannerDataSource dataSource, TimeProvider? timeProvider = null)
{
_dataSource = dataSource ?? throw new ArgumentNullException(nameof(dataSource));
_timeProvider = timeProvider ?? TimeProvider.System;
}
public async Task<IReadOnlyList<SecretExceptionPatternRow>> GetActiveByTenantAsync(
Guid tenantId,
CancellationToken cancellationToken = default)
{
var now = _timeProvider.GetUtcNow();
var sql = $"""
SELECT
exception_id AS "ExceptionId",
@@ -222,14 +231,14 @@ public sealed class PostgresSecretExceptionPatternRepository : ISecretExceptionP
FROM {PatternTableName}
WHERE tenant_id = @p0
AND is_active = TRUE
AND (expires_at IS NULL OR expires_at > NOW())
AND (expires_at IS NULL OR expires_at > @p1)
ORDER BY name
""";
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
return await dbContext.Database.SqlQueryRaw<SecretExceptionPatternRow>(sql, tenantId)
return await dbContext.Database.SqlQueryRaw<SecretExceptionPatternRow>(sql, tenantId, now)
.ToListAsync(cancellationToken)
.ConfigureAwait(false);
}
@@ -289,7 +298,7 @@ public sealed class PostgresSecretExceptionPatternRepository : ISecretExceptionP
await using var connection = await _dataSource.OpenSystemConnectionAsync(cancellationToken).ConfigureAwait(false);
await using var dbContext = ScannerDbContextFactory.Create(connection, _dataSource.CommandTimeoutSeconds, SchemaName);
var result = await dbContext.Database.SqlQueryRaw<ExceptionPatternInsertResult>(
var result = (await dbContext.Database.SqlQueryRaw<ExceptionPatternInsertResult>(
sql,
pattern.TenantId, pattern.Name,
(object?)pattern.Description ?? DBNull.Value,
@@ -300,8 +309,8 @@ public sealed class PostgresSecretExceptionPatternRepository : ISecretExceptionP
(object?)pattern.ExpiresAt ?? DBNull.Value,
pattern.IsActive,
(object?)pattern.CreatedBy ?? DBNull.Value)
.FirstAsync(cancellationToken)
.ConfigureAwait(false);
.ToListAsync(cancellationToken)
.ConfigureAwait(false)).First();
pattern.ExceptionId = result.exception_id;
pattern.CreatedAt = result.created_at;
@@ -315,13 +324,15 @@ public sealed class PostgresSecretExceptionPatternRepository : ISecretExceptionP
{
ArgumentNullException.ThrowIfNull(pattern);
var now = _timeProvider.GetUtcNow();
var sql = $"""
UPDATE {PatternTableName}
SET
name = @p0, description = @p1, value_pattern = @p2,
applicable_rule_ids = @p3, file_path_glob = @p4,
justification = @p5, expires_at = @p6, is_active = @p7,
updated_at = NOW(), updated_by = @p8
updated_at = @p11, updated_by = @p8
WHERE tenant_id = @p9 AND exception_id = @p10
""";
@@ -340,7 +351,8 @@ public sealed class PostgresSecretExceptionPatternRepository : ISecretExceptionP
(object?)pattern.ExpiresAt ?? DBNull.Value,
pattern.IsActive,
(object?)pattern.UpdatedBy ?? DBNull.Value,
tenantId, pattern.ExceptionId
tenantId, pattern.ExceptionId,
now
],
cancellationToken)
.ConfigureAwait(false);

View File

@@ -22,11 +22,7 @@ internal static class ScannerDbContextFactory
if (string.Equals(normalizedSchema, ScannerStorageDefaults.DefaultSchemaName, StringComparison.Ordinal))
{
// Use the static compiled model when schema matches the default for faster context startup.
if (ScannerDbContextModel.Instance.GetEntityTypes().Any())
{
optionsBuilder.UseModel(ScannerDbContextModel.Instance);
}
optionsBuilder.UseModel(ScannerDbContextModel.Instance);
}
return new ScannerDbContext(optionsBuilder.Options, normalizedSchema);

View File

@@ -126,10 +126,12 @@ public sealed class ArtifactRepository : RepositoryBase<ScannerDataSource>
{
ArgumentException.ThrowIfNullOrWhiteSpace(artifactId);
var now = _timeProvider.GetUtcNow();
var sql = $"""
UPDATE {Table}
SET ref_count = ref_count + @delta,
updated_at_utc = NOW() AT TIME ZONE 'UTC'
updated_at_utc = @now
WHERE id = @id
RETURNING ref_count
""";
@@ -141,6 +143,7 @@ public sealed class ArtifactRepository : RepositoryBase<ScannerDataSource>
{
AddParameter(cmd, "id", artifactId);
AddParameter(cmd, "delta", delta);
AddParameter(cmd, "now", now);
},
cancellationToken).ConfigureAwait(false);

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;
}
}

View File

@@ -0,0 +1,78 @@
using FluentAssertions;
using Microsoft.EntityFrameworkCore;
using StellaOps.Scanner.Storage.EfCore.CompiledModels;
using StellaOps.Scanner.Storage.EfCore.Models;
using StellaOps.TestKit;
using Xunit;
namespace StellaOps.Scanner.Storage.Tests;
/// <summary>
/// Guard tests ensuring the EF Core compiled model is real (not a stub)
/// and contains all expected entity type registrations.
/// </summary>
public sealed class CompiledModelGuardTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompiledModel_Instance_IsNotNull()
{
ScannerDbContextModel.Instance.Should().NotBeNull(
"compiled model must be generated via 'dotnet ef dbcontext optimize', not a stub");
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompiledModel_HasExpectedEntityTypeCount()
{
var entityTypes = ScannerDbContextModel.Instance.GetEntityTypes().ToList();
entityTypes.Should().HaveCount(24,
"scanner compiled model must contain exactly 24 entity types (regenerate with 'dotnet ef dbcontext optimize' if count differs)");
}
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData(typeof(ScanManifestEntity))]
[InlineData(typeof(ScanMetricsEntity))]
[InlineData(typeof(ArtifactBomEntity))]
[InlineData(typeof(ReachabilityResultEntity))]
[InlineData(typeof(RiskStateSnapshotEntity))]
[InlineData(typeof(MaterialRiskChangeEntity))]
[InlineData(typeof(ProofBundleEntity))]
[InlineData(typeof(IdempotencyKeyEntity))]
[InlineData(typeof(CallGraphSnapshotEntity))]
[InlineData(typeof(BinaryIdentityEntity))]
[InlineData(typeof(BinaryPackageMapEntity))]
[InlineData(typeof(BinaryVulnAssertionEntity))]
[InlineData(typeof(SecretDetectionSettingsEntity))]
[InlineData(typeof(CodeChangeEntity))]
[InlineData(typeof(EpssRawEntity))]
[InlineData(typeof(EpssSignalEntity))]
[InlineData(typeof(EpssSignalConfigEntity))]
[InlineData(typeof(VexCandidateEntity))]
[InlineData(typeof(FuncProofEntity))]
[InlineData(typeof(FuncNodeEntity))]
[InlineData(typeof(FuncTraceEntity))]
[InlineData(typeof(ReachabilityDriftResultEntity))]
[InlineData(typeof(DriftedSinkEntity))]
[InlineData(typeof(FacetSealEntity))]
public void CompiledModel_ContainsEntityType(Type entityType)
{
var found = ScannerDbContextModel.Instance.FindEntityType(entityType);
found.Should().NotBeNull(
$"compiled model must contain entity type '{entityType.Name}' — regenerate if missing");
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompiledModel_EntityTypes_HaveTableNames()
{
var entityTypes = ScannerDbContextModel.Instance.GetEntityTypes();
foreach (var entityType in entityTypes)
{
var tableName = entityType.GetTableName();
tableName.Should().NotBeNullOrWhiteSpace(
$"entity type '{entityType.ClrType.Name}' must have a table name configured");
}
}
}

View File

@@ -87,7 +87,7 @@ public sealed class EpssRepositoryIntegrationTests : IAsyncLifetime
WHERE model_date = @ModelDate
ORDER BY cve_id
""",
new { ModelDate = day2 })).ToList();
new { ModelDate = day2.ToDateTime(TimeOnly.MinValue) })).ToList();
Assert.Equal(3, changes.Count);

View File

@@ -6,6 +6,7 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FluentAssertions" />
<PackageReference Include="Moq" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
</ItemGroup>

View File

@@ -0,0 +1,230 @@
// -----------------------------------------------------------------------------
// TimeProviderIntegrationTests.cs
// Verifies the NOW() -> TimeProvider migration: repositories that previously
// relied on SQL NOW() for timestamp columns now use _timeProvider.GetUtcNow(),
// allowing tests to inject a fixed clock and assert that stored timestamps
// match the injected time rather than wall-clock time.
// -----------------------------------------------------------------------------
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Npgsql;
using StellaOps.Infrastructure.Postgres.Options;
using StellaOps.Scanner.Storage.Entities;
using StellaOps.Scanner.Storage.Postgres;
using StellaOps.TestKit;
using Xunit;
namespace StellaOps.Scanner.Storage.Tests;
[Collection("scanner-postgres")]
public sealed class TimeProviderIntegrationTests : IAsyncLifetime
{
private readonly ScannerPostgresFixture _fixture;
private ScannerDataSource _dataSource = null!;
private NpgsqlDataSource _npgsqlDataSource = null!;
/// <summary>
/// A distinctive past time that could never be confused with wall-clock UTC.
/// If a timestamp column equals this value, it was set by TimeProvider, not SQL NOW().
/// </summary>
private static readonly DateTimeOffset FixedTime =
new(2020, 6, 15, 12, 0, 0, TimeSpan.Zero);
public TimeProviderIntegrationTests(ScannerPostgresFixture fixture)
{
_fixture = fixture;
}
public async ValueTask InitializeAsync()
{
await _fixture.TruncateAllTablesAsync();
var options = new ScannerStorageOptions
{
Postgres = new PostgresOptions
{
ConnectionString = _fixture.ConnectionString,
SchemaName = _fixture.SchemaName
}
};
_dataSource = new ScannerDataSource(
Options.Create(options),
NullLoggerFactory.Instance.CreateLogger<ScannerDataSource>());
_npgsqlDataSource = NpgsqlDataSource.Create(_fixture.ConnectionString);
}
public async ValueTask DisposeAsync()
{
await _npgsqlDataSource.DisposeAsync();
}
// -------------------------------------------------------------------------
// Test 1: SecretDetectionSettings — Update uses TimeProvider for updated_at
// -------------------------------------------------------------------------
[Fact]
[Trait("Category", TestCategories.Integration)]
public async Task SecretDetectionSettings_Update_SetsUpdatedAtFromTimeProvider()
{
// Arrange — create with system clock so the row exists in the DB
var systemRepo = new PostgresSecretDetectionSettingsRepository(_dataSource);
var tenantId = Guid.NewGuid();
var settings = new SecretDetectionSettingsRow
{
TenantId = tenantId,
Enabled = true,
RevelationPolicy = "{}",
EnabledRuleCategories = ["generic"],
DisabledRuleIds = [],
AlertSettings = "{}",
MaxFileSizeBytes = 1_048_576,
ExcludedFileExtensions = [],
ExcludedPaths = [],
ScanBinaryFiles = false,
RequireSignedRuleBundles = false,
UpdatedBy = "test-agent"
};
var created = await systemRepo.CreateAsync(settings);
// The DB-generated timestamps should be recent (wall-clock), not our fixed time.
created.CreatedAt.Should().BeAfter(DateTimeOffset.UtcNow.AddMinutes(-5),
"CreateAsync timestamps come from the DB and should be recent wall-clock time");
// Act — update using a repository wired to the fixed time provider
var fixedTimeProvider = new FixedTimeProvider(FixedTime);
var fixedRepo = new PostgresSecretDetectionSettingsRepository(_dataSource, fixedTimeProvider);
created.Enabled = false;
var updated = await fixedRepo.UpdateAsync(created, expectedVersion: created.Version);
updated.Should().BeTrue("the update should succeed with the correct version");
// Assert — read back and verify updated_at matches the fixed time
var readBack = await systemRepo.GetByTenantAsync(tenantId);
readBack.Should().NotBeNull();
readBack!.UpdatedAt.Should().BeCloseTo(FixedTime, TimeSpan.FromSeconds(1),
"updated_at must come from the injected TimeProvider, not SQL NOW()");
readBack.Enabled.Should().BeFalse("the updated value should be persisted");
}
// -------------------------------------------------------------------------
// Test 2: FuncProofRepository — Store uses TimeProvider for created_at_utc
// -------------------------------------------------------------------------
[Fact]
[Trait("Category", TestCategories.Integration)]
public async Task FuncProof_Store_SetsCreatedAtUtcFromTimeProvider()
{
// Arrange
var fixedTimeProvider = new FixedTimeProvider(FixedTime);
var repo = new PostgresFuncProofRepository(_npgsqlDataSource, fixedTimeProvider);
var scanId = Guid.NewGuid();
var proofId = $"blake3:{Guid.NewGuid():N}";
var document = new FuncProofDocumentRow
{
ScanId = scanId,
ProofId = proofId,
BuildId = $"gnu:{Guid.NewGuid():N}",
BuildIdType = "gnu-build-id",
FileSha256 = $"sha256:{Guid.NewGuid():N}",
BinaryFormat = "elf",
Architecture = "x86_64",
IsStripped = false,
FunctionCount = 42,
TraceCount = 7,
ProofContent = """{"version":"1.0","functions":[]}""",
CompressedContent = null,
DsseEnvelopeId = null,
OciArtifactDigest = null,
RekorEntryId = null,
GeneratorVersion = "1.0.0-test",
GeneratedAtUtc = FixedTime.AddHours(-1)
};
// Act
var id = await repo.StoreAsync(document);
// Assert — read back and verify created_at_utc matches fixed time
var readBack = await repo.GetByIdAsync(id);
readBack.Should().NotBeNull();
readBack!.CreatedAtUtc.Should().BeCloseTo(FixedTime, TimeSpan.FromSeconds(1),
"created_at_utc must come from the injected TimeProvider, not SQL NOW()");
}
// -------------------------------------------------------------------------
// Test 3: FuncProofRepository — Upsert conflict path sets updated_at_utc
// -------------------------------------------------------------------------
[Fact]
[Trait("Category", TestCategories.Integration)]
public async Task FuncProof_StoreConflict_SetsUpdatedAtUtcFromTimeProvider()
{
// Arrange — first insert with system clock
var systemRepo = new PostgresFuncProofRepository(_npgsqlDataSource);
var scanId = Guid.NewGuid();
var proofId = $"blake3:{Guid.NewGuid():N}";
var document = new FuncProofDocumentRow
{
ScanId = scanId,
ProofId = proofId,
BuildId = $"gnu:{Guid.NewGuid():N}",
BuildIdType = "gnu-build-id",
FileSha256 = $"sha256:{Guid.NewGuid():N}",
BinaryFormat = "elf",
Architecture = "x86_64",
IsStripped = false,
FunctionCount = 10,
TraceCount = 3,
ProofContent = """{"version":"1.0","functions":[]}""",
CompressedContent = null,
DsseEnvelopeId = null,
OciArtifactDigest = null,
RekorEntryId = null,
GeneratorVersion = "1.0.0-test",
GeneratedAtUtc = DateTimeOffset.UtcNow
};
var originalId = await systemRepo.StoreAsync(document);
// Verify no updated_at_utc on first insert
var original = await systemRepo.GetByIdAsync(originalId);
original.Should().NotBeNull();
original!.UpdatedAtUtc.Should().BeNull("first insert should not set updated_at_utc");
// Act — store again with the same proof_id using fixed time (triggers ON CONFLICT)
var fixedTimeProvider = new FixedTimeProvider(FixedTime);
var fixedRepo = new PostgresFuncProofRepository(_npgsqlDataSource, fixedTimeProvider);
var conflictId = await fixedRepo.StoreAsync(document);
// Assert — the returned id should be the same as the original
conflictId.Should().Be(originalId);
var readBack = await systemRepo.GetByIdAsync(originalId);
readBack.Should().NotBeNull();
readBack!.UpdatedAtUtc.Should().NotBeNull("ON CONFLICT path should set updated_at_utc");
readBack.UpdatedAtUtc!.Value.Should().BeCloseTo(FixedTime, TimeSpan.FromSeconds(1),
"updated_at_utc on conflict must come from the injected TimeProvider, not SQL NOW()");
}
// -------------------------------------------------------------------------
// Helper: FixedTimeProvider
// -------------------------------------------------------------------------
internal sealed class FixedTimeProvider : TimeProvider
{
private readonly DateTimeOffset _fixedTime;
public FixedTimeProvider(DateTimeOffset fixedTime) => _fixedTime = fixedTime;
public override DateTimeOffset GetUtcNow() => _fixedTime;
}
}

View File

@@ -0,0 +1,66 @@
using FluentAssertions;
using Microsoft.EntityFrameworkCore;
using StellaOps.Scanner.Triage.CompiledModels;
using StellaOps.Scanner.Triage.Entities;
using StellaOps.TestKit;
using Xunit;
namespace StellaOps.Scanner.Triage.Tests;
/// <summary>
/// Guard tests ensuring the EF Core compiled model is real (not a stub)
/// and contains all expected entity type registrations.
/// </summary>
public sealed class CompiledModelGuardTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompiledModel_Instance_IsNotNull()
{
TriageDbContextModel.Instance.Should().NotBeNull(
"compiled model must be generated via 'dotnet ef dbcontext optimize', not a stub");
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompiledModel_HasExpectedEntityTypeCount()
{
var entityTypes = TriageDbContextModel.Instance.GetEntityTypes().ToList();
entityTypes.Should().HaveCount(11,
"triage compiled model must contain exactly 11 entity types (regenerate with 'dotnet ef dbcontext optimize' if count differs)");
}
[Trait("Category", TestCategories.Unit)]
[Theory]
[InlineData(typeof(TriageFinding))]
[InlineData(typeof(TriageEffectiveVex))]
[InlineData(typeof(TriageReachabilityResult))]
[InlineData(typeof(TriageRiskResult))]
[InlineData(typeof(TriageDecision))]
[InlineData(typeof(TriageEvidenceArtifact))]
[InlineData(typeof(TriageSnapshot))]
[InlineData(typeof(TriageScan))]
[InlineData(typeof(TriagePolicyDecision))]
[InlineData(typeof(TriageAttestation))]
[InlineData(typeof(TriageCaseCurrent))]
public void CompiledModel_ContainsEntityType(Type entityType)
{
var found = TriageDbContextModel.Instance.FindEntityType(entityType);
found.Should().NotBeNull(
$"compiled model must contain entity type '{entityType.Name}' — regenerate if missing");
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public void CompiledModel_EntityTypes_HaveTableOrViewNames()
{
var entityTypes = TriageDbContextModel.Instance.GetEntityTypes();
foreach (var entityType in entityTypes)
{
var tableName = entityType.GetTableName();
var viewName = entityType.GetViewName();
(tableName ?? viewName).Should().NotBeNullOrWhiteSpace(
$"entity type '{entityType.ClrType.Name}' must have a table or view name configured");
}
}
}