Search/AdvisoryAI and DAL conversion to EF finishes up. Preparation for microservices consolidation.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// <auto-generated />
|
||||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using StellaOps.Scanner.Storage.EfCore.CompiledModels;
|
||||
using StellaOps.Scanner.Storage.EfCore.Context;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// <auto-generated />
|
||||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using StellaOps.Scanner.Storage.EfCore.Context;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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))]
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions" />
|
||||
<PackageReference Include="Moq" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user