Lyo.PackageMetadata.Postgres
1.0.1
dotnet add package Lyo.PackageMetadata.Postgres --version 1.0.1
NuGet\Install-Package Lyo.PackageMetadata.Postgres -Version 1.0.1
<PackageReference Include="Lyo.PackageMetadata.Postgres" Version="1.0.1" />
<PackageVersion Include="Lyo.PackageMetadata.Postgres" Version="1.0.1" />
<PackageReference Include="Lyo.PackageMetadata.Postgres" />
paket add Lyo.PackageMetadata.Postgres --version 1.0.1
#r "nuget: Lyo.PackageMetadata.Postgres, 1.0.1"
#:package Lyo.PackageMetadata.Postgres@1.0.1
#addin nuget:?package=Lyo.PackageMetadata.Postgres&version=1.0.1
#tool nuget:?package=Lyo.PackageMetadata.Postgres&version=1.0.1
Lyo.PackageMetadata.Postgres
EF Core persistence for Lyo.PackageMetadata.IPackageMetadataStore.
Problem it solves
Stack traces contain stripped namespaces / assembly-qualified tokens. Lyo.PackageMetadata resolves “what NuGet/Git package owns this prefix?” for diagnostics overlays. PostgresPackageMetadataStore implements the store against normalized tables (PackageStackPrefix rows ordered by * NormalizedPrefix* length) so resolution is O(sorted prefixes) in-process after each DB read (bulk API loads all prefixes once per call when caching allows).
Storage model (conceptual)
PackageMetadataEntityholds catalog metadata (id, package name, version range, SPDX/license expression blobs, etc.—see EF configurations).PackageStackPrefixEntitymapsNormalizedPrefix→ owning package (longest prefix wins).
Implementing behaviors — Bulk resolution (TryGetManyForStrippedMethodPrefixesAsync)
- Input: list of distinct stripped prefixes (typically one per decoded stack frame subtree).
- Output: dictionary including one entry per input key, value
nullwhen nothing matches contract rules. - Never silently drop requested keys—that invariant keeps
Lyo.Diagnosticbulk decode paths deterministic.
Implementing behaviors — Prefix catalog caching (PostgresPrefixCatalogCachingMode)
PostgresPackageMetadataOptions.PrefixCatalogCaching controls repeated DB chatter:
| Mode | Meaning |
|---|---|
InvalidateOnRegisterManyOrClear |
Maintain an immutable in-process snapshot; reload when mutations bump generation counter (ClearPrefixCatalogCache or RegisterManyAsync on same instance). |
Disabled |
Always hit Postgres (wrap with outer cache yourself if importing huge catalogs asynchronously). |
ClearPrefixCatalogCache() is harmless when caching disabled (only bumps generation).
Cross-process writes do not invalidate—document that for ops (disable snapshot or bust cache after CLI imports).
DI registration (Extensions)
AddPackageMetadataDbContextFactory(+FromConfiguration) — bindsPostgresPackageMetadataOptions, registersPackageMetadataDbContextfactory, attaches *AddPostgresMigrations* bootstrap.AddPostgresPackageMetadataStore— factory +IPackageMetadataStore⇒ PostgresPackageMetadataStore singleton resolving options +IDbContextFactory.
Migrations & schema
Migrations ship under Migrations/ (schema/table names follow PostgresPackageMetadataOptions.Schema conventions—inspect snapshot for authoritative DDL).
See also
Lyo.Diagnosticstack decode + breadcrumb tooling that optionally consumesIPackageMetadataStore.
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Exceptions— (direct, lyo)Lyo.PackageMetadata— (direct, lyo)Lyo.Postgres— (direct, lyo)Microsoft.EntityFrameworkCore10.0.5— (direct, microsoft)Microsoft.EntityFrameworkCore.Design10.0.5— (direct, microsoft)Microsoft.Extensions.Configuration.Binder10.0.5— (direct, microsoft)Microsoft.Extensions.Options10.0.5— (direct, microsoft)Lyo.Common— (transitive, lyo)Lyo.Hashing— (transitive, lyo)Microsoft.EntityFrameworkCore.Relational10.0.5— (transitive, microsoft)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5— (transitive, microsoft)Microsoft.Extensions.Hosting.Abstractions10.0.5— (transitive, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5— (transitive, microsoft)Npgsql.EntityFrameworkCore.PostgreSQL10.0.3— (transitive, third-party)System.IO.Hashing10.0.5— (transitive, microsoft, net10.0)System.Memory4.6.3— (transitive, microsoft, netstandard2.0)System.Text.Json10.0.5— (transitive, microsoft, netstandard2.0)System.Threading.Tasks.Extensions4.6.3— (transitive, microsoft)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Lyo.Exceptions (>= 1.0.1)
- Lyo.PackageMetadata (>= 1.0.1)
- Lyo.Postgres (>= 1.0.1)
- Microsoft.EntityFrameworkCore (>= 10.0.5)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.Options (>= 10.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.