Skip to content

Latest commit

 

History

History

diagnostics

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Diagnostics Reference

This reference documents all 118 diagnostic codes emitted by the Oproto.FluentDynamoDb source generator. Each code links to a detailed page with the message format, description, triggering example, and fix.

Numbering Conventions

Prefix Code Range Domain
DISC 001–006 Discriminator configuration and pattern matching
DYNDB 001–036, 101–115, 120–127, 1001–1004 Core DynamoDB entity validation and mapping
FDDB 001–006, 0020–0021, 050–055, 060–062, 070–072, 080, 090, 100–104, 110–116, 120–126 Table/index generation and configuration
PROJ 001–006, 101–102 Projection model validation
SEC 001–002 Security and package dependency checks

Prefix Distinction: DYNDB vs FDDB

Both DYNDB and FDDB prefixes relate to the FluentDynamoDb source generator:

  • DYNDB covers core entity validation — constraints on individual entity properties, key formats, type compatibility, and attribute correctness.
  • FDDB covers table and index generation — multi-entity table configuration, index consolidation, projection wiring, and computed key format validation.

DYNDB Range Bands

The DYNDB prefix uses range bands to group related diagnostics by functional area:

Range Area
001–036 Core validation (keys, types, attributes, references)
101–115 Advanced type system (TTL, JSON, blobs, spatial, deprecation)
120–127 Index attribute validation (GSI/LSI configuration)
1001–1004 Extension method wrapper generation

The varying digit widths within DYNDB (3-digit, 4-digit) reflect these logical groupings rather than an inconsistency.

FDDB Numbering Inconsistency

Codes FDDB0020 and FDDB0021 use four-digit numbering while other FDDB codes use three-digit numbering. This is a known inconsistency retained for backward compatibility — these codes were introduced before the current naming convention was established and cannot be renumbered without breaking existing suppressions.

DISC — Discriminator Configuration

Code Severity Title
DISC001 Warning Both DiscriminatorValue and DiscriminatorPattern specified
DISC002 Error DiscriminatorValue or DiscriminatorPattern without DiscriminatorProperty
DISC003 Error Invalid discriminator pattern syntax
DISC004 Error Ambiguous overlapping discriminator patterns
DISC005 Info Overlapping discriminator pattern resolved
DISC006 Error Tautological exclusion guard detected

DYNDB — Core Entity Validation

Code Severity Title
DYNDB001 Error Missing partition key
DYNDB002 Error Multiple partition keys
DYNDB003 Error Multiple sort keys
DYNDB004 Error Invalid key format
DYNDB005 Error Conflicting entity types
DYNDB006 Error Invalid GSI configuration
DYNDB007 Error Missing DynamoDbAttribute
DYNDB008 Warning Ambiguous related entity pattern
DYNDB009 Error Unsupported property type
DYNDB010 Error Entity must be partial
DYNDB011 Error Multi-item entity missing partition key
DYNDB012 Warning Multi-item entity missing sort key
DYNDB013 Error Collection property cannot be key
DYNDB014 Warning Multi-item entity partition key format
DYNDB015 Error Invalid related entity type
DYNDB016 Warning Related entities require sort key
DYNDB017 Warning Conflicting related entity patterns
DYNDB018 Error Invalid key format syntax
DYNDB019 Warning Potential key collision
DYNDB020 Error Circular reference detected
DYNDB021 Warning Reserved word usage
DYNDB022 Error Invalid DynamoDB configuration
DYNDB023 Warning Performance warning
DYNDB024 Error Missing required attribute
DYNDB025 Warning Potential data loss
DYNDB026 Error Invalid GSI projection
DYNDB027 Warning Scalability warning
DYNDB028 Error Unsupported type conversion
DYNDB029 Warning Too many attributes
DYNDB030 Error Invalid attribute name
DYNDB031 Error Invalid computed key source
DYNDB032 Error Invalid extracted key source
DYNDB033 Error Circular key dependency
DYNDB034 Error Self-referencing computed key
DYNDB035 Error Invalid extracted key index
DYNDB036 Warning Invalid computed key format
DYNDB101 Error Invalid TTL property type
DYNDB102 Error Missing JSON serializer package
DYNDB103 Error Missing blob provider package
DYNDB104 Error Incompatible attribute combination
DYNDB105 Error Multiple TTL fields
DYNDB106 Error Unsupported collection type
DYNDB107 Error Nested map type missing [DynamoDbEntity]
DYNDB108 Error S2Level specified without S2 index type
DYNDB109 Error H3Resolution specified without H3 index type
DYNDB110 Error GeoHashPrecision specified without GeoHash index type
DYNDB111 Error Spatial index configuration on non-GeoLocation property
DYNDB112 Warning Missing Geospatial package
DYNDB113 Warning Deprecated [Queryable] attribute
DYNDB115 Error BlobStorage requires BlobData type
DYNDB120 Error GSI sort key without partition key
DYNDB121 Error Duplicate GSI partition keys
DYNDB122 Error Duplicate GSI sort keys
DYNDB123 Error Duplicate LSI sort keys
DYNDB124 Error Empty GsiPartitionKey index name
DYNDB125 Error Empty GsiSortKey index name
DYNDB126 Error Empty LsiSortKey index name
DYNDB127 Error GSI/LSI index name conflict
DYNDB1001 Error Invalid GenerateWrapper usage
DYNDB1002 Error Invalid extension method
DYNDB1003 Warning Interface not found
DYNDB1004 Warning Interface not implemented

FDDB — Table/Index Generation

Code Severity Title
FDDB001 Error No default entity specified
FDDB002 Error Multiple default entities
FDDB003 Error Conflicting accessor configuration
FDDB004 Error Empty entity property name
FDDB005 Warning Inconsistent discriminator properties
FDDB006 Error Conflicting table namespaces
FDDB0020 Error EnableDynamicFields requires partial class
FDDB0021 Warning DynamicFields property already exists
FDDB050 Error Conflicting index Name values
FDDB051 Error Non-partial table type
FDDB052 Warning Redundant index Name specification
FDDB053 Error Conflicting index partition key attribute
FDDB054 Error Conflicting index sort key attribute
FDDB055 Error Conflicting index type
FDDB060 Error Projection source entity not found
FDDB061 Error Projection metadata inheritance failure
FDDB062 Error Projection interface violation
FDDB070 Warning Include projection without properties
FDDB072 Warning KeysOnly with UseProjection
FDDB080 Error Unresolvable source property in computed key
FDDB090 Error Format placeholder count mismatch
FDDB100 Error Key prefix conflicts with explicit computed format
FDDB101 Error Explicit discriminator pattern conflicts with key format
FDDB102 Warning Overlapping auto-derived discriminator patterns
FDDB103 Info Redundant explicit discriminator pattern
FDDB104 Info Compound discrimination resolved overlap
FDDB110 Warning Missing schema version attribute
FDDB111 Error Declared version below minimum supported
FDDB112 Error Declared version above current
FDDB113 Info Older-but-supported version, upgrade available
FDDB114 Error Major version less than 1
FDDB115 Error Minor version less than 0
FDDB116 Error Multiple schema version attributes detected
FDDB120 Error Constant key conflicts with computed attribute
FDDB121 Error Prefix not applicable to constant key
FDDB122 Error Cannot extract from constant key
FDDB123 Error Empty constant key value
FDDB124 Error Extracted property conflicts with DynamoDbAttribute
FDDB125 Error Computed key property has redundant Prefix
FDDB126 Error Key property references non-compile-time-constant value

PROJ — Projection Model Validation

Code Severity Title
PROJ001 Error Projection property not found
PROJ002 Error Projection property type mismatch
PROJ003 Error Invalid projection source entity
PROJ004 Error Projection must be partial
PROJ005 Error UseProjection references invalid type
PROJ006 Error Conflicting UseProjection attributes
PROJ101 Warning Projection includes all properties
PROJ102 Warning Projection has many properties

SEC — Security and Package Dependencies

Code Severity Title
SEC001 Warning Missing Encryption.Kms package
SEC002 Error Missing Amazon.Lambda.DynamoDBEvents package