Merged
Conversation
… showcase - Add OperationSamples project with compilable code examples demonstrating FluentDynamoDb API usage - Create Order and OrderLine domain models with single-table design pattern - Implement sample files for all DynamoDB operations: Get, Put, Update, Delete, Query, Scan, BatchGet, BatchWrite, TransactionGet, TransactionWrite - Each operation sample includes four implementation patterns: Raw AWS SDK, FluentDynamoDb manual builder, formatted strings, and lambda expressions - Add design specification and requirements documentation for the operation samples showcase - Provide side-by-side comparisons showing verbosity reduction and API improvements over raw AWS SDK - Enable use of samples for screenshots and video presentations demonstrating FluentDynamoDb capabilities
…ain model conversions
- Update RawSdk methods to manually convert AWS SDK responses to domain models
- Add manual conversion from AttributeValue dictionaries in BatchGetSamples
- Implement ReturnValues in DeleteSamples to return deleted Order entity
- Add manual conversion from AttributeValue dictionaries in GetSamples
- Implement ReturnValues in PutSamples to return created Order entity
- Add manual conversion from AttributeValue dictionaries in QuerySamples
- Add manual conversion from AttributeValue dictionaries in ScanSamples
- Implement ReturnValues in TransactionGetSamples for domain model returns
- Implement ReturnValues in TransactionWriteSamples for domain model returns
- Create OrderUpdateModel class for lambda expression Set() operations
- Update FluentLambdaUpdateAsync to use Set(x => new OrderUpdateModel { ... }) syntax
- Update FluentLambdaTransactionWriteAsync to use proper lambda expressions with conditions
- Verify express-route methods are used in FluentLambda samples
- Mark task 7 and all subtasks as complete in operation-samples-showcase specification
- Ensures full equivalency between RawSdk and Fluent approaches for demonstration purposes
🔍 PR Validation ResultsValidation Checks
Overall Status❌ Some validations failed. Please review the details above and fix any issues. 📋 Validation DetailsChangelog Validation
Build Status
Test Status
This comment was automatically generated by the PR validation workflow. |
dguisinger
added a commit
that referenced
this pull request
Dec 5, 2025
* Merge dependabot updates to develop (#30)
* Feature/cicd pipeline (#6)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(deps): Bump actions/setup-java from 4 to 5 (#7)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/github-script from 7 to 8 (#8)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/download-artifact from 4 to 6 (#9)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v6)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/upload-artifact from 4 to 5 (#10)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/setup-dotnet from 4 to 5 (#11)
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-dotnet
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Feature/cicd pipeline (#31)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(dependabot): Refactor Dependabot configuration for library maintenance
- Disable NuGet package ecosystem updates to preserve version compatibility
- Add comment explaining rationale for disabling automatic NuGet updates
- Set open-pull-requests-limit to 0 for NuGet ecosystem
- Add target-branch configuration for GitHub Actions updates
- Maintain existing labels and scheduling for GitHub Actions ecosystem
* Feature/cicd pipeline (#32)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(dependabot): Refactor Dependabot configuration for library maintenance
- Disable NuGet package ecosystem updates to preserve version compatibility
- Add comment explaining rationale for disabling automatic NuGet updates
- Set open-pull-requests-limit to 0 for NuGet ecosystem
- Add target-branch configuration for GitHub Actions updates
- Maintain existing labels and scheduling for GitHub Actions ecosystem
* chore(build): Enhance release workflow and standardize project configuration
- Add Directory.Build.props for centralized project configuration
- Update release.yml workflow to improve package versioning and validation
- Remove hardcoded version numbers from individual project files
- Add package dependency validation step in release workflow
- Configure common build settings across all projects
- Standardize version, assembly, and package version generation
- Enable trimming and AOT compatibility for all projects
- Improve package metadata and symbol generation
This change ensures consistent versioning, build configuration, and package generation across the entire project ecosystem.
* chore(project): Update project configuration and testing infrastructure (#33)
- Add Kiro specification documents for migrating to Awesome Assertions
- Update multiple unit test project configurations across solution
- Add KNOWN_ISSUES.md documentation file
- Modify GitHub workflow and documentation files
- Update global usings and test project references
- Refactor and standardize unit test project configurations
- Prepare infrastructure for potential testing framework migration
* refactor(source-generator): Restructure source generator code generation (#34)
* refactor(source-generator): Restructure source generator code generation
- Remove deprecated KNOWN_ISSUES.md file
- Update multiple generator classes to improve code generation logic
- Add new FileHeaderGenerator to centralize file header generation
- Remove TableIndexGenerator in favor of more integrated index generation
- Update unit tests to validate new generation approach
- Consolidate index and field generation strategies
- Improve overall source generator maintainability and consistency
Resolves long-standing issue with duplicate index property generation by refactoring generation approach.
* docs(changelog): Update changelog with source generation and table index changes
- Add note about source generation using nested classes
- Document fix for duplicate index generation on tables
- Maintain consistent changelog formatting
- Prepare for upcoming release documentation
* feat(streams): Add comprehensive DynamoDB Streams processing support (#35)
- Introduce new Oproto.FluentDynamoDb.Streams package for advanced stream processing
- Implement type-safe stream record processing with strongly-typed deserialization
- Add source generator support for stream conversion method generation
- Create new attributes, processors, and extensions for stream handling
- Implement discriminator-based stream routing and filtering mechanisms
- Enhance integration tests and project configuration for streams support
- Remove legacy stream processing implementations from core library
- Add comprehensive unit and integration test coverage for new stream features
Rationale: Improve DynamoDB stream processing capabilities with a modular, type-safe, and extensible architecture that separates concerns and provides flexible stream handling options.
* Fixed a ton of broken integration tests (#36)
* feat(updates): Add comprehensive expression-based updates support
- Implement core infrastructure for expression-based DynamoDB updates
- Add source generator support for creating UpdateExpression classes
- Introduce new expression translation mechanisms for complex update scenarios
- Create new exception types for update-related validation
- Add new extension methods for update expression property handling
- Enhance documentation with new core feature explanation
- Add integration and unit tests for new update expression functionality
- Prepare groundwork for advanced update scenarios including nullable support
- Introduce initial phase of expression-based update design
Resolves limitations discovered during initial implementation of update expression features, providing a robust foundation for flexible DynamoDB update operations.
* Feature/update expression pt2 (#37)
* feat(updates): Implement comprehensive expression-based updates for Phase 2
- Add nullable type support for extension methods
- Implement format string application in UpdateExpressionTranslator
- Support arithmetic operations in SET clauses
- Improve mixing of update expression approaches
- Write comprehensive integration tests for new features
- Update documentation to reflect Phase 2 capabilities
- Add new integration test suite for complex update scenarios
- Enhance error handling and type constraints for update expressions
Closes #Phase2 of expression-based updates implementation, introducing advanced DynamoDB update expression capabilities with improved type safety, formatting, and arithmetic support.
* test(source-generator): Update unit tests to reflect new generated source files
- Modify test assertions to expect 4 generated sources for single entity tests
- Update test cases to expect 7 generated sources for multi-entity tests
- Adjust expected generated file count to include new UpdateExpressions and UpdateExpressionsExtensions files
- Ensure test coverage reflects expanded source generation capabilities
- Maintain existing test validation and compilation checks
* feat(serialization): Add comprehensive data serialization and formatting support (#49)
- Enhance source generator to support DateTime Kind preservation
- Add format string support for serialization and deserialization
- Implement encryption handling in update expressions
- Extend DynamoDbAttribute with DateTimeKind and Format parameters
- Add new integration and unit tests for complex serialization scenarios
- Create documentation guides for DateTime Kind, encryption, and format strings
- Improve source generator metadata extraction and code generation
- Update UpdateExpressionTranslator to handle formatted values
This change introduces robust data serialization features to improve type safety, timezone handling, and data transformation capabilities in the FluentDynamoDb library.
* feat(update-builders): Add comprehensive entity-specific update builder support (#50)
- Introduce entity-specific update builders for simplified DynamoDB updates
- Generate type-specific update builder classes via source generator
- Add new `GenerateWrapperAttribute` to support builder generation
- Create new API consistency and integration tests for update builders
- Update documentation with examples of new entity-specific update builder usage
- Enhance source generator to support more flexible update expression generation
- Improve overall developer experience for DynamoDB update operations
- Maintain backward compatibility with existing update request builders
* feat(transaction-batch-api): Redesign transaction and batch APIs with… (#51)
* feat(transaction-batch-api): Redesign transaction and batch APIs with unified builder pattern
- Add static entry points `DynamoDbTransactions` and `DynamoDbBatch` for cleaner API surface
- Introduce marker interfaces (`ITransactableGetBuilder`, `ITransactablePutBuilder`, etc.) to enable builder reuse across transaction and batch contexts
- Replace parallel transaction-specific builders with unified `TransactionGetBuilder` and `TransactionWriteBuilder`
- Rename batch builders from `BatchGetItemBuilder`/`BatchWriteItemBuilder` to `BatchGetBuilder`/`BatchWriteBuilder` for consistency
- Add `ConditionCheckBuilder<T>` for transaction condition checks without code duplication
- Add `BatchGetResponse` and `TransactionGetResponse` types for structured response handling
- Reorganize API consistency tests into dedicated `Batch/` and `Transactions/` directories
- Update integration tests to validate new transaction and batch API patterns
- Add comprehensive design specification and requirements documentation in `.kiro/specs/`
- Eliminate code duplication by reusing existing request builders through typed `Add()` method overloads
- Maintain compile-time safety and fluent API ergonomics across all operation types
* docs(changelog): Document transaction and batch API redesign with unified builder pattern
* feat(geospatial): Add comprehensive geospatial query support with GeoHash encoding (#62)
- Add new Oproto.FluentDynamoDb.Geospatial package with GeoHash-based location queries
- Implement GeoLocation struct with Haversine distance calculations (meters, kilometers, miles)
- Implement GeoBoundingBox struct for rectangular geographic area queries
- Add GeoHashEncoder with configurable precision levels (1-12) for coordinate encoding
- Add GeoHashCell struct representing individual geohash cells with neighbor calculations
- Implement GeoHashExtensions for encoding/decoding coordinates to/from geohash strings
- Implement GeoHashBoundingBoxExtensions for calculating geohash ranges from bounding boxes
- Add GeoHashQueryExtensions for fluent lambda-based geospatial query API
- Add comprehensive unit test suite covering error handling, encoding, and query scenarios
- Extend source generator to detect geospatial package and generate GeoHash serialization
- Update EntityAnalyzer, MapperGenerator, and PropertyModel for geospatial property support
- Add DynamoDbAttributeAttribute.GeoHashPrecision property for per-property precision control
- Add integration tests with StoreEntity demonstrating real-world geospatial usage
- Include detailed documentation: README, EXAMPLES, PRECISION_GUIDE, and LIMITATIONS
- Add design specifications and requirements documentation in .kiro/specs
- Update CHANGELOG with geospatial feature details
- Enables efficient geographic queries on DynamoDB using GeoHash-based range queries with AOT compatibility
* fix(request-builders): Fix empty ExpressionAttributeNames and paralle… (#63)
* fix(request-builders): Fix empty ExpressionAttributeNames and parallel build issues
- Remove unnecessary empty ExpressionAttributeNames dictionary initialization in GetItemRequestBuilder, DeleteItemRequestBuilder, and ScanRequestBuilder that caused DynamoDB to reject requests
- Add `/maxcpucount:1` flag to all dotnet build commands in GitHub Actions workflows to prevent file locking conflicts from source generator parallel builds
- Update unit test assertion to use `BeNullOrEmpty()` instead of `BeEmpty()` to match corrected behavior
- DynamoDB API rejects requests when ExpressionAttributeNames is set but empty; only set when attribute names are actually used
* ci: Update DynamoDB Local download URL and add to gitignore
- Update DynamoDB Local download URL from S3 to CloudFront CDN endpoint in test workflow
- Change URL from https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz to https://d1ni2b6xgvw0s0.cloudfront.net/v2.x/dynamodb_local_latest.tar.gz for both Linux and Windows test jobs
- Add dynamodb-local/ directory to .gitignore to prevent committing downloaded DynamoDB Local artifacts
- Improves CI/CD reliability by using the official CloudFront distribution and prevents accidental commits of test dependencies
* test(performance): Relax parallel execution performance assertion for CI environments
- Update parallel performance test to allow 50% tolerance for parallel execution time
- Replace strict sequential/parallel comparison with more realistic threshold accounting for CI overhead
- Add clarifying comments explaining tolerance for resource contention in CI environments
- Improve test reliability by reducing false negatives from infrastructure variability
* ci: Improve CI workflow robustness and relax performance test assertions
- Add coverage directory existence check in test.yml to prevent failures when coverage artifacts are missing
- Suppress find command errors with 2>/dev/null to handle missing coverage directories gracefully
- Add continue-on-error: true to coverage report generation step for better CI resilience
- Update performance test assertions to verify operation completion rather than timing relationships
- Remove strict parallel execution speedup assertion that was unreliable in CI environments with variable resource availability
- Add diagnostic logging for sequential and parallel execution times for troubleshooting purposes
- Improve error messages and comments to clarify CI environment limitations and test intent
* Feature/geo s2 h3 (#75)
* test(geospatial): Add comprehensive S2 and H3 spatial indexing tests
- Add extensive H3 encoder unit tests covering all resolution levels (0-4)
- Add S2 encoder unit tests with property-based and reference validation
- Add H3 coordinate system and data integrity verification tests
- Add S2 component verification and cross-validation tests
- Add property test arbitraries for geospatial coordinate generation
- Update geospatial unit test project configuration and global usings
- Add design specifications and requirements documentation for S2/H3 support
- Add SpatialIndexType enumeration for pluggable spatial index selection
- Update DynamoDbAttributeAttribute to support S2 and H3 configuration
- Add THIRD-PARTY-NOTICES.md for spatial indexing library attributions
- Comprehensive test coverage ensures correctness of spatial encoding algorithms across multiple resolutions and edge cases
* test(geospatial): Expand H3 encoder test coverage and fix coordinate consistency tests
- Add H3CoordinateRoundTripTest for internal coordinate transformation debugging
- Add H3DateLineDiagnosticTest for date line encoding edge case diagnostics
- Add H3EncodingVerificationTest for comprehensive encoding validation
- Add H3EquatorDebugTest for equatorial region encoding verification
- Add H3FaceOverageDebugTest for face coverage boundary testing
- Add H3PentagonEncodingTests for pentagon cell encoding validation
- Update H3DataIntegrityTests to verify H3 guarantees (deterministic encode/decode, logical containment) rather than incorrect round-trip assumption
- Update H3EncoderPropertyTests with improved test coverage
- Update H3DetailedDebugTest with additional diagnostic cases
- Update H3FailingCaseTest with new edge cases
- Update H3Encoder implementation to support new test scenarios
- Update task tracking to mark 15.7f complete and document pentagon encoding issue in 15.8
- Clarify that H3 does not guarantee encode→decode→encode produces same index per H3 specification
* feat(geospatial): Expand spatial indexing with S2/H3 cell covering and query API
- Add comprehensive cell covering computation for S2 and H3 spatial indexes
- Implement SpatialQueryAsync API for multi-cell proximity and bounding box queries
- Add SpatialQueryResponse and SpatialContinuationToken for pagination support
- Create S2Cell, S2CellCovering, H3Cell, and H3CellCovering classes for spatial operations
- Add GeoLocationExtensions and S2/H3Extensions for coordinate manipulation
- Implement GeoHashCellCovering for consistent cell covering across all index types
- Add StoreCoordinatesAttribute for automatic coordinate storage configuration
- Expand test coverage with CellCoveringPropertyTests, DatelineCellCoveringTests, PoleHandlingTests, and S2/H3-specific tests
- Add comprehensive documentation: COORDINATE_STORAGE_GUIDE.md, PERFORMANCE_GUIDE.md, S2_H3_USAGE_GUIDE.md
- Update source generator to support spatial index code generation and diagnostics
- Remove H3ReferenceDataTests in favor of property-based testing approach
- Update specification documents with finalized design and implementation details
* test(geospatial): Expand spatial indexing test coverage and fix H3 cell covering algorithm
- Add comprehensive H3 unit tests including pentagon encoding, neighbor analysis, and base cell lookups
- Add S2 and H3 integration tests covering spatial queries, edge cases, and performance benchmarks
- Add cross-index comparison tests to validate S2 and H3 behavior consistency
- Fix H3Encoder.GetNeighbors() to return correct adjacent cell indices instead of unrelated cells
- Fix H3 cell covering algorithm to properly expand rings and return complete result sets
- Add diagnostic test cases for H3 encoding/decoding edge cases and coordinate consistency
- Add test entities for S2 and H3 spatial indexing with various storage patterns (GSI, sort keys, computed properties)
- Update source generator deserialization tests for spatial index support
- Add expression translator tests for GeoLocation and GSI key validation
- Update design and requirements documentation for cell covering algorithm fixes
- Add known limitations documentation for source generator
- Improve coordinate storage guide and S2/H3 usage guide documentation
* test(geospatial): Fix integration tests and refactor spatial query test entities
- Rename reserved keyword attributes in test entities (location→loc, status→store_status)
- Fix test code bugs generating invalid coordinate values in H3/S2 edge case tests
- Reorganize integration tests with GSI-specific test classes for S2 and H3 spatial queries
- Add new test entities with GSI low precision variants for comprehensive coverage
- Update cell covering property tests with improved edge case handling
- Add diagnostic test utilities for spatial indexing validation
- Add GeoHash API consistency tests for query surface validation
- Refactor spatial query architecture tests with improved test infrastructure
- Update S2/H3 encoder tests with enhanced cross-validation coverage
- Improve pole handling and dateline cell covering test coverage
- Update specification documents reflecting completed integration test fixes
* docs(changelog): Add S2 and H3 geospatial indexing features and documentation
- Document S2 cell encoding/decoding with configurable precision levels (0-30)
- Document H3 hexagonal cell encoding/decoding with configurable resolutions (0-15)
- Add cell covering algorithms for radius and bounding box queries
- Document spiral-ordered results and neighbor cell calculation features
- Add parent/child cell navigation and International Date Line crossing support
- Document polar region handling and cell count estimation capabilities
- Add hard limits on cell counts to prevent expensive queries (default: 100, max: 500)
- Document S2Cell and H3Cell value types with bounds, neighbors, parent, and children
- Add S2CellCovering and H3CellCovering for computing cell coverings
- Document S2Encoder and H3Encoder for coordinate-to-cell conversion
- Add extension methods: ToS2Cell(), ToS2Token(), ToH3Cell(), ToH3Index()
- Document GSI-based spatial query support for efficient DynamoDB queries
- Add fluent query extensions: WithinRadiusS2(), WithinRadiusH3(), WithinBoundingBoxS2(), WithinBoundingBoxH3()
- Document continuation token support for paginated spatial queries
- Add full AOT compatibility for Native AOT deployments
- Include S2 vs H3 comparison and usage examples
- Add references to new documentation guides for S2, H3, and spatial query patterns
* feat(code-cleanup): Remove reflection and eliminate compiler warnings (#76)
- Add IEntityMetadataProvider interface for compile-time entity metadata discovery
- Add IProjectionModel and IDiscriminatedProjection interfaces for projection support
- Add IHasDynamoDbClient interface to replace reflection-based client access
- Refactor MetadataResolver to use interface-based metadata instead of reflection
- Remove WithClientExtensions.cs and integrate client access through builder interfaces
- Update ProjectionExtensions to use IProjectionModel interface instead of reflection
- Add DynamicCompilationHelper for test infrastructure without reflection
- Add ReflectionReductionPropertyTests to verify no-reflection code paths
- Add NoReflectionPropertyTests and WithClientPropertyTests for interface validation
- Update all request builders to implement IHasDynamoDbClient interface
- Suppress remaining compiler warnings in test projects with documentation
- Update CHANGELOG.md with breaking changes and migration guidance
- Add design specification for code cleanup and reflection removal strategy
- Improve AOT compatibility and trimmer safety across the library
* Feature/service registration (#77)
* feat(aot-service-registration): Implement AOT-compatible service registration pattern
- Add FluentDynamoDbOptions configuration object for instance-based service registration
- Introduce IGeospatialProvider, IEntityHydratorRegistry, and related provider interfaces
- Implement DefaultGeospatialProvider and DefaultEntityHydratorRegistry for default behavior
- Add HydratorGenerator source generator for compile-time entity hydration code generation
- Create GeospatialOptionsExtensions for fluent configuration of geospatial features
- Update ExpressionTranslator and UpdateExpressionTranslator to use injected providers
- Modify all request builders to accept and use FluentDynamoDbOptions
- Add comprehensive unit tests for options, providers, and source-generated code
- Update DynamoDbTableBase to pass options through constructor injection
- Add AOT-compatible service registration design and requirements specifications
- Update documentation with Configuration and Geospatial advanced topics
- Eliminate remaining reflection-based type discovery and instantiation
- Ensure test isolation through instance-based configuration instead of global state
* refactor(request-builders): Consolidate constructor overloads with optional parameters
- Merge duplicate constructors into single constructor with optional FluentDynamoDbOptions parameter
- Remove separate logger-based constructor overloads from all request builders
- Update ConditionCheckBuilder, DeleteItemRequestBuilder, GetItemRequestBuilder, PutItemRequestBuilder, QueryRequestBuilder, ScanRequestBuilder, and UpdateItemRequestBuilder
- Simplify API surface by using default parameter values instead of multiple overloads
- Maintain backward compatibility through optional parameters with sensible defaults
- Reduce code duplication and improve maintainability across request builder classes
* fix(sensitive-data-redaction): Fix sensitive data redaction in logs and source generator (#78)
- Added `IsSensitive` property to `PropertyMetadata` for runtime sensitivity detection
- Updated `ExpressionTranslator.CaptureValue()` to check `PropertyMetadata.IsSensitive` for redaction decisions
- Updated `MapperGenerator` to populate `IsSensitive = true` in generated `PropertyMetadata` for sensitive properties
- Sensitive property values now correctly show as `[REDACTED]` in debug logs while actual values are used in DynamoDB queries
- Added missing `using Oproto.FluentDynamoDb;` directive to `TableGenerator.cs` and `EntitySpecificUpdateBuilderGenerator.cs`
- Generated table classes and update builders now correctly resolve `FluentDynamoDbOptions` type
- Updated integration tests to use `FluentDynamoDbOptions` for logger configuration
- Updated CHANGELOG.md with fixes for sensitive data redaction and source generator compilation errors
* docs(compile-warnings): Add specification for systematic warning reduction initiative (#79)
- Add design document outlining phased approach to reduce 1,182 compile warnings
- Add requirements specification for warning reduction across all projects
- Add task breakdown for implementation phases 1-6
- Update CHANGELOG.md with warning reduction initiative details
- Update project files to enable nullable reference types and stricter analysis
- Fix nullable reference type warnings across test projects and main library
- Update API surface tests to reflect nullable annotation changes
- Add AnalyzerReleases tracking files for source generator diagnostics
- Update diagnostic descriptors to document all analyzer rules
- Restructure code to eliminate reflection-based warnings in main library
- Add proper nullable annotations to generated code and examples
- Suppress AOT/trimming warnings in test projects where appropriate
- This systematic approach prioritizes fixing root causes over blanket suppressions
* Feature/documentation validation and updates (#80)
* docs(documentation-overhaul): Establish comprehensive documentation standards and guidelines
- Add design specification for documentation overhaul initiative with layered architecture approach
- Add requirements document defining scope, success criteria, and deliverables for documentation improvements
- Add task breakdown and implementation roadmap for documentation overhaul phases
- Add steering document establishing API style priority (Lambda > Format String > Manual) and documentation standards
- Update all unit and integration tests with improved code comments and documentation clarity
- Update geospatial module (H3, S2) with enhanced inline documentation and architectural comments
- Update source generator tests with clarified test purposes and expected behaviors
- Update README.md with organization attribution and improved project overview
- Update THIRD-PARTY-NOTICES.md with comprehensive attribution for S2 and H3 geospatial libraries
- Update docs/README.md with navigation structure and documentation hub organization
- Establish documentation standards for code examples, method verification, and attribution requirements
- Improve code comment quality across test suites and core modules for maintainability
* docs(documentation-overhaul): Complete comprehensive documentation updates and accuracy improvements
- Create internal architecture documentation covering IDynamoDbEntity interface, source generation, and request builder integration
- Add new API reference documentation with organized method listings by operation category
- Update core feature guides with API style ordering (lambda expressions, format strings, manual approaches)
- Verify and audit all code examples across getting-started, core-features, and advanced-topics sections
- Restore Keys.Pk()/Keys.Sk() usage patterns and document key builder functionality with prefix formatting
- Document entity accessors on generated tables and their type-safe benefits
- Add lambda expression SET operation examples (Add, Remove, Delete, IfNotExists, ListAppend)
- Document manual field name usage with compile-time validation trade-offs
- Update documentation index and navigation with new pages
- Update CHANGELOG.md with all documentation improvements
- Mark all documentation overhaul tasks as complete in task tracking
* Feature/example projects (#81)
* feat(examples): Add comprehensive example applications demonstrating library capabilities
- Add Examples.Shared project with DynamoDbSetup and ConsoleHelpers utilities for shared infrastructure
- Add TodoList example application demonstrating basic CRUD operations with single-entity design
- Add InvoiceManager example application showcasing single-table multi-entity design patterns
- Add TransactionDemo example application comparing transaction approaches and atomicity guarantees
- Add StoreLocator example application demonstrating geospatial queries with GeoHash, S2, and H3 encoding
- Add Examples.Tests project with property-based tests for all example applications
- Update CHANGELOG.md and QUICK_REFERENCE.md documentation
- Add comprehensive design and requirements specifications in .kiro/specs for example applications and storelocator-adaptive-precision
- Reorganize solution structure with examples folder containing all example projects
- Remove legacy BasicUsage example and replace with new structured examples
- All examples configured to use DynamoDB Local and direct project references to latest source code
* feat(storelocator): Fix GeoHash queries and add GSI validation
- Replace incorrect SpatialQueryAsync with lambda-based Query using WithinDistanceKilometers for GeoHash searches
- Add post-filtering by exact distance to handle rectangular approximation from BETWEEN queries
- Implement GSI validation in Program.cs to detect missing Global Secondary Indexes at startup
- Add table recreation capability to recreate tables with correct index definitions
- Update StoreGeoHashTable.FindStoresNearbyAsync to use proper query approach for GeoHash precision 7 index
- Add design specification documenting GeoHash query fix and GSI validation architecture
- Update project dependencies and build configuration across all packages
- Enhance ConsoleHelpers with improved output formatting for warnings and validation messages
- Add comprehensive requirements and task documentation for storelocator query fixes
This fixes the issue where GeoHash queries were incorrectly using SpatialQueryAsync (designed for S2/H3 cell hierarchies) instead of the proper lambda expression approach that translates to DynamoDB BETWEEN queries.
* docs(api-corrections): Correct outdated API patterns and add documentation changelog (#82)
- Add design specification for systematic documentation API corrections initiative
- Add requirements document for documentation validation and updates
- Add tasks document outlining correction workflow and tracking
- Create docs/DOCUMENTATION_CHANGELOG.md to track documentation changes separately from main CHANGELOG
- Update .kiro/steering/documentation.md to include changelog maintenance requirements
- Correct ExecuteAsync() method references to proper API methods (GetItemAsync, PutAsync, UpdateAsync, DeleteAsync, ToListAsync) across all documentation files
- Update return value access patterns in code examples to use correct APIs (ToDynamoDbResponseAsync or DynamoDbOperationContext)
- Add AsyncLocal caveats to documentation where context-based patterns are used
- Update XML documentation comments in request builders to reflect current API
- Correct code examples in core features, advanced topics, getting started, and reference sections
- Add documentation changelog entries to track all corrections made
- Update main CHANGELOG.md with documentation correction initiative entry
This systematic approach ensures all outdated API patterns are identified and corrected while maintaining a separate changelog for documentation changes to facilitate synchronization with derived documentation maintained by other teams.
* Feature/sample operations (#83)
* feat(operation-samples): Add comprehensive DynamoDB operation samples showcase
- Add OperationSamples project with compilable code examples demonstrating FluentDynamoDb API usage
- Create Order and OrderLine domain models with single-table design pattern
- Implement sample files for all DynamoDB operations: Get, Put, Update, Delete, Query, Scan, BatchGet, BatchWrite, TransactionGet, TransactionWrite
- Each operation sample includes four implementation patterns: Raw AWS SDK, FluentDynamoDb manual builder, formatted strings, and lambda expressions
- Add design specification and requirements documentation for the operation samples showcase
- Provide side-by-side comparisons showing verbosity reduction and API improvements over raw AWS SDK
- Enable use of samples for screenshots and video presentations demonstrating FluentDynamoDb capabilities
* feat(operation-samples): Refine samples for full equivalency with domain model conversions
- Update RawSdk methods to manually convert AWS SDK responses to domain models
- Add manual conversion from AttributeValue dictionaries in BatchGetSamples
- Implement ReturnValues in DeleteSamples to return deleted Order entity
- Add manual conversion from AttributeValue dictionaries in GetSamples
- Implement ReturnValues in PutSamples to return created Order entity
- Add manual conversion from AttributeValue dictionaries in QuerySamples
- Add manual conversion from AttributeValue dictionaries in ScanSamples
- Implement ReturnValues in TransactionGetSamples for domain model returns
- Implement ReturnValues in TransactionWriteSamples for domain model returns
- Create OrderUpdateModel class for lambda expression Set() operations
- Update FluentLambdaUpdateAsync to use Set(x => new OrderUpdateModel { ... }) syntax
- Update FluentLambdaTransactionWriteAsync to use proper lambda expressions with conditions
- Verify express-route methods are used in FluentLambda samples
- Mark task 7 and all subtasks as complete in operation-samples-showcase specification
- Ensures full equivalency between RawSdk and Fluent approaches for demonstration purposes
* feat(lambda-expression-api-gaps): Add lambda expression support and scan opt-in pattern (#84)
- Add lambda expression `Where()` overloads for `PutItemRequestBuilder<TEntity>` and `DeleteItemRequestBuilder<TEntity>` to enable type-safe condition expressions
- Implement `GenerateAccessorScanMethods` in source generator to create `Scan()` methods for entity accessors
- Introduce `[Scannable]` attribute requirement for Scan operations to prevent accidental expensive table scans
- Remove generic `Scan<TEntity>()` method from `DynamoDbTableBase` and enforce opt-in pattern via attribute
- Add comprehensive unit tests for lambda expression API gaps in `LambdaExpressionApiGapsPropertyTests.cs`
- Update integration tests to use `[Scannable]` attribute on entities that support scanning
- Add design specification and requirements documentation for lambda expression API gaps feature
- Update CHANGELOG.md and DOCUMENTATION_CHANGELOG.md with new features and breaking changes
- Ensure condition expressions use `ExpressionValidationMode.None` to allow referencing any property, not just keys
* feat(example-entity-cleanup): Clean up entity definitions and documentation (#85)
- Remove redundant [DynamoDbEntity] attributes from table entities (only needed for nested types)
- Remove IDynamoDbEntity interface implementations auto-generated by source generator
- Remove duplicate CreatePk() and CreateSk() methods that conflict with source-generated Keys
- Add Prefix configuration to [PartitionKey] and [SortKey] attributes for key formatting
- Update OperationSamples Order and OrderLine entities with proper key prefixes
- Update InvoiceManager Customer, Invoice, and InvoiceLine entities
- Update StoreLocator GeoHash, H3, and S2 entities
- Update TransactionDemo Account and TransactionRecord entities
- Update TodoList TodoItem entity
- Update documentation examples in ProjectionModels, FieldLevelSecurity, and DOCUMENTATION_CHANGELOG
- Add design specification and requirements for entity cleanup initiative
- Add entity patterns steering document for future reference
- Refactor entities to rely on source-generated implementations instead of manual code
* feat(nuget-package-polish): Add comprehensive NuGet package polish across all packages (#86)
- Add design specification, requirements, and task documentation for NuGet package polish initiative
- Create missing README.md files for Oproto.FluentDynamoDb, Logging.Extensions, NewtonsoftJson, and SystemTextJson packages
- Update existing README files for consistency and quality across all packages
- Add shared package icon (128x128 PNG) in docs/assets directory
- Configure all package .csproj files to reference shared icon and include README files in NuGet packages
- Update Directory.Build.props with common package metadata (Authors, Copyright, URLs)
- Add FluentDynamoDB logo SVG asset for documentation
- Update root README.md with comprehensive project overview and package descriptions
- Ensure consistent package descriptions and metadata across all 10 packages
- Standardize README structure with installation, usage, features, and links sections
* Feature/json refactor (#87)
* feat(nuget-package-polish): Add comprehensive NuGet package polish across all packages
- Add design specification, requirements, and task documentation for NuGet package polish initiative
- Create missing README.md files for Oproto.FluentDynamoDb, Logging.Extensions, NewtonsoftJson, and SystemTextJson packages
- Update existing README files for consistency and quality across all packages
- Add shared package icon (128x128 PNG) in docs/assets directory
- Configure all package .csproj files to reference shared icon and include README files in NuGet packages
- Update Directory.Build.props with common package metadata (Authors, Copyright, URLs)
- Add FluentDynamoDB logo SVG asset for documentation
- Update root README.md with comprehensive project overview and package descriptions
- Ensure consistent package descriptions and metadata across all 10 packages
- Standardize README structure with installation, usage, features, and links sections
* feat(json-serializer-refactor): Refactor JSON serialization to runtime configuration
- Add IJsonBlobSerializer interface for pluggable JSON serialization in core library
- Create SystemTextJsonBlobSerializer and SystemTextJsonOptionsExtensions for System.Text.Json support
- Create NewtonsoftJsonBlobSerializer and NewtonsoftJsonOptionsExtensions for Newtonsoft.Json support
- Remove compile-time DynamoDbJsonSerializerAttribute and JsonSerializerType enum
- Update FluentDynamoDbOptions to accept IJsonBlobSerializer configuration
- Refactor source generator to detect and use runtime serializer configuration
- Update JsonSerializerContextGenerator to work with runtime configuration
- Add comprehensive integration tests for JsonBlob advanced type handling
- Update all unit tests to use new runtime serializer configuration
- Add design specification and requirements documentation for refactor initiative
- Update CHANGELOG and documentation with new serializer configuration patterns
- Enable flexible JSON serializer selection at runtime instead of compile-time attributes
* feat(options-propagation-fixes): Fix options propagation in batch/transaction responses and documentation
- Add options propagation to BatchGetResponse, BatchGetBuilder, TransactionGetResponse, and TransactionGetBuilder to ensure serializer configuration is available during hydration
- Update IAsyncEntityHydrator interface to accept FluentDynamoDbOptions parameter for consistent options handling
- Fix HydratorGenerator to pass options through generated hydration code
- Correct API usage patterns in documentation: replace `.ExecuteAsync()` with `.PutAsync()` and `.ToListAsync()` for Put and Query operations
- Update README files in Oproto.FluentDynamoDb.NewtonsoftJson and Oproto.FluentDynamoDb.SystemTextJson packages with corrected API examples
- Add comprehensive design specification for options propagation architecture in `.kiro/specs/options-propagation-fixes/`
- Update integration test build fixes specification with corrected API patterns
- Update CHANGELOG.md and DOCUMENTATION_CHANGELOG.md with changes and corrections
- Update GenerateAccessorsAttribute documentation and advanced topics guides with correct API usage
- Fixes issue where [JsonBlob] properties would fail during batch/transaction response hydration due to missing serializer configuration
* Feature/merge main into dev (#88)
* Feature/cicd pipeline (#6)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(deps): Bump actions/setup-java from 4 to 5 (#7)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/github-script from 7 to 8 (#8)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/download-artifact from 4 to 6 (#9)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v6)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/upload-artifact from 4 to 5 (#10)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/setup-dotnet from 4 to 5 (#11)
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-dotnet
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/checkout from 4 to 5 (#38)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dguisinger
added a commit
that referenced
this pull request
Dec 5, 2025
* Merge dependabot updates to develop (#30)
* Feature/cicd pipeline (#6)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(deps): Bump actions/setup-java from 4 to 5 (#7)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/github-script from 7 to 8 (#8)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/download-artifact from 4 to 6 (#9)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v6)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/upload-artifact from 4 to 5 (#10)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/setup-dotnet from 4 to 5 (#11)
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-dotnet
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Feature/cicd pipeline (#31)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(dependabot): Refactor Dependabot configuration for library maintenance
- Disable NuGet package ecosystem updates to preserve version compatibility
- Add comment explaining rationale for disabling automatic NuGet updates
- Set open-pull-requests-limit to 0 for NuGet ecosystem
- Add target-branch configuration for GitHub Actions updates
- Maintain existing labels and scheduling for GitHub Actions ecosystem
* Feature/cicd pipeline (#32)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(dependabot): Refactor Dependabot configuration for library maintenance
- Disable NuGet package ecosystem updates to preserve version compatibility
- Add comment explaining rationale for disabling automatic NuGet updates
- Set open-pull-requests-limit to 0 for NuGet ecosystem
- Add target-branch configuration for GitHub Actions updates
- Maintain existing labels and scheduling for GitHub Actions ecosystem
* chore(build): Enhance release workflow and standardize project configuration
- Add Directory.Build.props for centralized project configuration
- Update release.yml workflow to improve package versioning and validation
- Remove hardcoded version numbers from individual project files
- Add package dependency validation step in release workflow
- Configure common build settings across all projects
- Standardize version, assembly, and package version generation
- Enable trimming and AOT compatibility for all projects
- Improve package metadata and symbol generation
This change ensures consistent versioning, build configuration, and package generation across the entire project ecosystem.
* chore(project): Update project configuration and testing infrastructure (#33)
- Add Kiro specification documents for migrating to Awesome Assertions
- Update multiple unit test project configurations across solution
- Add KNOWN_ISSUES.md documentation file
- Modify GitHub workflow and documentation files
- Update global usings and test project references
- Refactor and standardize unit test project configurations
- Prepare infrastructure for potential testing framework migration
* refactor(source-generator): Restructure source generator code generation (#34)
* refactor(source-generator): Restructure source generator code generation
- Remove deprecated KNOWN_ISSUES.md file
- Update multiple generator classes to improve code generation logic
- Add new FileHeaderGenerator to centralize file header generation
- Remove TableIndexGenerator in favor of more integrated index generation
- Update unit tests to validate new generation approach
- Consolidate index and field generation strategies
- Improve overall source generator maintainability and consistency
Resolves long-standing issue with duplicate index property generation by refactoring generation approach.
* docs(changelog): Update changelog with source generation and table index changes
- Add note about source generation using nested classes
- Document fix for duplicate index generation on tables
- Maintain consistent changelog formatting
- Prepare for upcoming release documentation
* feat(streams): Add comprehensive DynamoDB Streams processing support (#35)
- Introduce new Oproto.FluentDynamoDb.Streams package for advanced stream processing
- Implement type-safe stream record processing with strongly-typed deserialization
- Add source generator support for stream conversion method generation
- Create new attributes, processors, and extensions for stream handling
- Implement discriminator-based stream routing and filtering mechanisms
- Enhance integration tests and project configuration for streams support
- Remove legacy stream processing implementations from core library
- Add comprehensive unit and integration test coverage for new stream features
Rationale: Improve DynamoDB stream processing capabilities with a modular, type-safe, and extensible architecture that separates concerns and provides flexible stream handling options.
* Fixed a ton of broken integration tests (#36)
* feat(updates): Add comprehensive expression-based updates support
- Implement core infrastructure for expression-based DynamoDB updates
- Add source generator support for creating UpdateExpression classes
- Introduce new expression translation mechanisms for complex update scenarios
- Create new exception types for update-related validation
- Add new extension methods for update expression property handling
- Enhance documentation with new core feature explanation
- Add integration and unit tests for new update expression functionality
- Prepare groundwork for advanced update scenarios including nullable support
- Introduce initial phase of expression-based update design
Resolves limitations discovered during initial implementation of update expression features, providing a robust foundation for flexible DynamoDB update operations.
* Feature/update expression pt2 (#37)
* feat(updates): Implement comprehensive expression-based updates for Phase 2
- Add nullable type support for extension methods
- Implement format string application in UpdateExpressionTranslator
- Support arithmetic operations in SET clauses
- Improve mixing of update expression approaches
- Write comprehensive integration tests for new features
- Update documentation to reflect Phase 2 capabilities
- Add new integration test suite for complex update scenarios
- Enhance error handling and type constraints for update expressions
Closes #Phase2 of expression-based updates implementation, introducing advanced DynamoDB update expression capabilities with improved type safety, formatting, and arithmetic support.
* test(source-generator): Update unit tests to reflect new generated source files
- Modify test assertions to expect 4 generated sources for single entity tests
- Update test cases to expect 7 generated sources for multi-entity tests
- Adjust expected generated file count to include new UpdateExpressions and UpdateExpressionsExtensions files
- Ensure test coverage reflects expanded source generation capabilities
- Maintain existing test validation and compilation checks
* feat(serialization): Add comprehensive data serialization and formatting support (#49)
- Enhance source generator to support DateTime Kind preservation
- Add format string support for serialization and deserialization
- Implement encryption handling in update expressions
- Extend DynamoDbAttribute with DateTimeKind and Format parameters
- Add new integration and unit tests for complex serialization scenarios
- Create documentation guides for DateTime Kind, encryption, and format strings
- Improve source generator metadata extraction and code generation
- Update UpdateExpressionTranslator to handle formatted values
This change introduces robust data serialization features to improve type safety, timezone handling, and data transformation capabilities in the FluentDynamoDb library.
* feat(update-builders): Add comprehensive entity-specific update builder support (#50)
- Introduce entity-specific update builders for simplified DynamoDB updates
- Generate type-specific update builder classes via source generator
- Add new `GenerateWrapperAttribute` to support builder generation
- Create new API consistency and integration tests for update builders
- Update documentation with examples of new entity-specific update builder usage
- Enhance source generator to support more flexible update expression generation
- Improve overall developer experience for DynamoDB update operations
- Maintain backward compatibility with existing update request builders
* feat(transaction-batch-api): Redesign transaction and batch APIs with… (#51)
* feat(transaction-batch-api): Redesign transaction and batch APIs with unified builder pattern
- Add static entry points `DynamoDbTransactions` and `DynamoDbBatch` for cleaner API surface
- Introduce marker interfaces (`ITransactableGetBuilder`, `ITransactablePutBuilder`, etc.) to enable builder reuse across transaction and batch contexts
- Replace parallel transaction-specific builders with unified `TransactionGetBuilder` and `TransactionWriteBuilder`
- Rename batch builders from `BatchGetItemBuilder`/`BatchWriteItemBuilder` to `BatchGetBuilder`/`BatchWriteBuilder` for consistency
- Add `ConditionCheckBuilder<T>` for transaction condition checks without code duplication
- Add `BatchGetResponse` and `TransactionGetResponse` types for structured response handling
- Reorganize API consistency tests into dedicated `Batch/` and `Transactions/` directories
- Update integration tests to validate new transaction and batch API patterns
- Add comprehensive design specification and requirements documentation in `.kiro/specs/`
- Eliminate code duplication by reusing existing request builders through typed `Add()` method overloads
- Maintain compile-time safety and fluent API ergonomics across all operation types
* docs(changelog): Document transaction and batch API redesign with unified builder pattern
* feat(geospatial): Add comprehensive geospatial query support with GeoHash encoding (#62)
- Add new Oproto.FluentDynamoDb.Geospatial package with GeoHash-based location queries
- Implement GeoLocation struct with Haversine distance calculations (meters, kilometers, miles)
- Implement GeoBoundingBox struct for rectangular geographic area queries
- Add GeoHashEncoder with configurable precision levels (1-12) for coordinate encoding
- Add GeoHashCell struct representing individual geohash cells with neighbor calculations
- Implement GeoHashExtensions for encoding/decoding coordinates to/from geohash strings
- Implement GeoHashBoundingBoxExtensions for calculating geohash ranges from bounding boxes
- Add GeoHashQueryExtensions for fluent lambda-based geospatial query API
- Add comprehensive unit test suite covering error handling, encoding, and query scenarios
- Extend source generator to detect geospatial package and generate GeoHash serialization
- Update EntityAnalyzer, MapperGenerator, and PropertyModel for geospatial property support
- Add DynamoDbAttributeAttribute.GeoHashPrecision property for per-property precision control
- Add integration tests with StoreEntity demonstrating real-world geospatial usage
- Include detailed documentation: README, EXAMPLES, PRECISION_GUIDE, and LIMITATIONS
- Add design specifications and requirements documentation in .kiro/specs
- Update CHANGELOG with geospatial feature details
- Enables efficient geographic queries on DynamoDB using GeoHash-based range queries with AOT compatibility
* fix(request-builders): Fix empty ExpressionAttributeNames and paralle… (#63)
* fix(request-builders): Fix empty ExpressionAttributeNames and parallel build issues
- Remove unnecessary empty ExpressionAttributeNames dictionary initialization in GetItemRequestBuilder, DeleteItemRequestBuilder, and ScanRequestBuilder that caused DynamoDB to reject requests
- Add `/maxcpucount:1` flag to all dotnet build commands in GitHub Actions workflows to prevent file locking conflicts from source generator parallel builds
- Update unit test assertion to use `BeNullOrEmpty()` instead of `BeEmpty()` to match corrected behavior
- DynamoDB API rejects requests when ExpressionAttributeNames is set but empty; only set when attribute names are actually used
* ci: Update DynamoDB Local download URL and add to gitignore
- Update DynamoDB Local download URL from S3 to CloudFront CDN endpoint in test workflow
- Change URL from https://s3.us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.tar.gz to https://d1ni2b6xgvw0s0.cloudfront.net/v2.x/dynamodb_local_latest.tar.gz for both Linux and Windows test jobs
- Add dynamodb-local/ directory to .gitignore to prevent committing downloaded DynamoDB Local artifacts
- Improves CI/CD reliability by using the official CloudFront distribution and prevents accidental commits of test dependencies
* test(performance): Relax parallel execution performance assertion for CI environments
- Update parallel performance test to allow 50% tolerance for parallel execution time
- Replace strict sequential/parallel comparison with more realistic threshold accounting for CI overhead
- Add clarifying comments explaining tolerance for resource contention in CI environments
- Improve test reliability by reducing false negatives from infrastructure variability
* ci: Improve CI workflow robustness and relax performance test assertions
- Add coverage directory existence check in test.yml to prevent failures when coverage artifacts are missing
- Suppress find command errors with 2>/dev/null to handle missing coverage directories gracefully
- Add continue-on-error: true to coverage report generation step for better CI resilience
- Update performance test assertions to verify operation completion rather than timing relationships
- Remove strict parallel execution speedup assertion that was unreliable in CI environments with variable resource availability
- Add diagnostic logging for sequential and parallel execution times for troubleshooting purposes
- Improve error messages and comments to clarify CI environment limitations and test intent
* Feature/geo s2 h3 (#75)
* test(geospatial): Add comprehensive S2 and H3 spatial indexing tests
- Add extensive H3 encoder unit tests covering all resolution levels (0-4)
- Add S2 encoder unit tests with property-based and reference validation
- Add H3 coordinate system and data integrity verification tests
- Add S2 component verification and cross-validation tests
- Add property test arbitraries for geospatial coordinate generation
- Update geospatial unit test project configuration and global usings
- Add design specifications and requirements documentation for S2/H3 support
- Add SpatialIndexType enumeration for pluggable spatial index selection
- Update DynamoDbAttributeAttribute to support S2 and H3 configuration
- Add THIRD-PARTY-NOTICES.md for spatial indexing library attributions
- Comprehensive test coverage ensures correctness of spatial encoding algorithms across multiple resolutions and edge cases
* test(geospatial): Expand H3 encoder test coverage and fix coordinate consistency tests
- Add H3CoordinateRoundTripTest for internal coordinate transformation debugging
- Add H3DateLineDiagnosticTest for date line encoding edge case diagnostics
- Add H3EncodingVerificationTest for comprehensive encoding validation
- Add H3EquatorDebugTest for equatorial region encoding verification
- Add H3FaceOverageDebugTest for face coverage boundary testing
- Add H3PentagonEncodingTests for pentagon cell encoding validation
- Update H3DataIntegrityTests to verify H3 guarantees (deterministic encode/decode, logical containment) rather than incorrect round-trip assumption
- Update H3EncoderPropertyTests with improved test coverage
- Update H3DetailedDebugTest with additional diagnostic cases
- Update H3FailingCaseTest with new edge cases
- Update H3Encoder implementation to support new test scenarios
- Update task tracking to mark 15.7f complete and document pentagon encoding issue in 15.8
- Clarify that H3 does not guarantee encode→decode→encode produces same index per H3 specification
* feat(geospatial): Expand spatial indexing with S2/H3 cell covering and query API
- Add comprehensive cell covering computation for S2 and H3 spatial indexes
- Implement SpatialQueryAsync API for multi-cell proximity and bounding box queries
- Add SpatialQueryResponse and SpatialContinuationToken for pagination support
- Create S2Cell, S2CellCovering, H3Cell, and H3CellCovering classes for spatial operations
- Add GeoLocationExtensions and S2/H3Extensions for coordinate manipulation
- Implement GeoHashCellCovering for consistent cell covering across all index types
- Add StoreCoordinatesAttribute for automatic coordinate storage configuration
- Expand test coverage with CellCoveringPropertyTests, DatelineCellCoveringTests, PoleHandlingTests, and S2/H3-specific tests
- Add comprehensive documentation: COORDINATE_STORAGE_GUIDE.md, PERFORMANCE_GUIDE.md, S2_H3_USAGE_GUIDE.md
- Update source generator to support spatial index code generation and diagnostics
- Remove H3ReferenceDataTests in favor of property-based testing approach
- Update specification documents with finalized design and implementation details
* test(geospatial): Expand spatial indexing test coverage and fix H3 cell covering algorithm
- Add comprehensive H3 unit tests including pentagon encoding, neighbor analysis, and base cell lookups
- Add S2 and H3 integration tests covering spatial queries, edge cases, and performance benchmarks
- Add cross-index comparison tests to validate S2 and H3 behavior consistency
- Fix H3Encoder.GetNeighbors() to return correct adjacent cell indices instead of unrelated cells
- Fix H3 cell covering algorithm to properly expand rings and return complete result sets
- Add diagnostic test cases for H3 encoding/decoding edge cases and coordinate consistency
- Add test entities for S2 and H3 spatial indexing with various storage patterns (GSI, sort keys, computed properties)
- Update source generator deserialization tests for spatial index support
- Add expression translator tests for GeoLocation and GSI key validation
- Update design and requirements documentation for cell covering algorithm fixes
- Add known limitations documentation for source generator
- Improve coordinate storage guide and S2/H3 usage guide documentation
* test(geospatial): Fix integration tests and refactor spatial query test entities
- Rename reserved keyword attributes in test entities (location→loc, status→store_status)
- Fix test code bugs generating invalid coordinate values in H3/S2 edge case tests
- Reorganize integration tests with GSI-specific test classes for S2 and H3 spatial queries
- Add new test entities with GSI low precision variants for comprehensive coverage
- Update cell covering property tests with improved edge case handling
- Add diagnostic test utilities for spatial indexing validation
- Add GeoHash API consistency tests for query surface validation
- Refactor spatial query architecture tests with improved test infrastructure
- Update S2/H3 encoder tests with enhanced cross-validation coverage
- Improve pole handling and dateline cell covering test coverage
- Update specification documents reflecting completed integration test fixes
* docs(changelog): Add S2 and H3 geospatial indexing features and documentation
- Document S2 cell encoding/decoding with configurable precision levels (0-30)
- Document H3 hexagonal cell encoding/decoding with configurable resolutions (0-15)
- Add cell covering algorithms for radius and bounding box queries
- Document spiral-ordered results and neighbor cell calculation features
- Add parent/child cell navigation and International Date Line crossing support
- Document polar region handling and cell count estimation capabilities
- Add hard limits on cell counts to prevent expensive queries (default: 100, max: 500)
- Document S2Cell and H3Cell value types with bounds, neighbors, parent, and children
- Add S2CellCovering and H3CellCovering for computing cell coverings
- Document S2Encoder and H3Encoder for coordinate-to-cell conversion
- Add extension methods: ToS2Cell(), ToS2Token(), ToH3Cell(), ToH3Index()
- Document GSI-based spatial query support for efficient DynamoDB queries
- Add fluent query extensions: WithinRadiusS2(), WithinRadiusH3(), WithinBoundingBoxS2(), WithinBoundingBoxH3()
- Document continuation token support for paginated spatial queries
- Add full AOT compatibility for Native AOT deployments
- Include S2 vs H3 comparison and usage examples
- Add references to new documentation guides for S2, H3, and spatial query patterns
* feat(code-cleanup): Remove reflection and eliminate compiler warnings (#76)
- Add IEntityMetadataProvider interface for compile-time entity metadata discovery
- Add IProjectionModel and IDiscriminatedProjection interfaces for projection support
- Add IHasDynamoDbClient interface to replace reflection-based client access
- Refactor MetadataResolver to use interface-based metadata instead of reflection
- Remove WithClientExtensions.cs and integrate client access through builder interfaces
- Update ProjectionExtensions to use IProjectionModel interface instead of reflection
- Add DynamicCompilationHelper for test infrastructure without reflection
- Add ReflectionReductionPropertyTests to verify no-reflection code paths
- Add NoReflectionPropertyTests and WithClientPropertyTests for interface validation
- Update all request builders to implement IHasDynamoDbClient interface
- Suppress remaining compiler warnings in test projects with documentation
- Update CHANGELOG.md with breaking changes and migration guidance
- Add design specification for code cleanup and reflection removal strategy
- Improve AOT compatibility and trimmer safety across the library
* Feature/service registration (#77)
* feat(aot-service-registration): Implement AOT-compatible service registration pattern
- Add FluentDynamoDbOptions configuration object for instance-based service registration
- Introduce IGeospatialProvider, IEntityHydratorRegistry, and related provider interfaces
- Implement DefaultGeospatialProvider and DefaultEntityHydratorRegistry for default behavior
- Add HydratorGenerator source generator for compile-time entity hydration code generation
- Create GeospatialOptionsExtensions for fluent configuration of geospatial features
- Update ExpressionTranslator and UpdateExpressionTranslator to use injected providers
- Modify all request builders to accept and use FluentDynamoDbOptions
- Add comprehensive unit tests for options, providers, and source-generated code
- Update DynamoDbTableBase to pass options through constructor injection
- Add AOT-compatible service registration design and requirements specifications
- Update documentation with Configuration and Geospatial advanced topics
- Eliminate remaining reflection-based type discovery and instantiation
- Ensure test isolation through instance-based configuration instead of global state
* refactor(request-builders): Consolidate constructor overloads with optional parameters
- Merge duplicate constructors into single constructor with optional FluentDynamoDbOptions parameter
- Remove separate logger-based constructor overloads from all request builders
- Update ConditionCheckBuilder, DeleteItemRequestBuilder, GetItemRequestBuilder, PutItemRequestBuilder, QueryRequestBuilder, ScanRequestBuilder, and UpdateItemRequestBuilder
- Simplify API surface by using default parameter values instead of multiple overloads
- Maintain backward compatibility through optional parameters with sensible defaults
- Reduce code duplication and improve maintainability across request builder classes
* fix(sensitive-data-redaction): Fix sensitive data redaction in logs and source generator (#78)
- Added `IsSensitive` property to `PropertyMetadata` for runtime sensitivity detection
- Updated `ExpressionTranslator.CaptureValue()` to check `PropertyMetadata.IsSensitive` for redaction decisions
- Updated `MapperGenerator` to populate `IsSensitive = true` in generated `PropertyMetadata` for sensitive properties
- Sensitive property values now correctly show as `[REDACTED]` in debug logs while actual values are used in DynamoDB queries
- Added missing `using Oproto.FluentDynamoDb;` directive to `TableGenerator.cs` and `EntitySpecificUpdateBuilderGenerator.cs`
- Generated table classes and update builders now correctly resolve `FluentDynamoDbOptions` type
- Updated integration tests to use `FluentDynamoDbOptions` for logger configuration
- Updated CHANGELOG.md with fixes for sensitive data redaction and source generator compilation errors
* docs(compile-warnings): Add specification for systematic warning reduction initiative (#79)
- Add design document outlining phased approach to reduce 1,182 compile warnings
- Add requirements specification for warning reduction across all projects
- Add task breakdown for implementation phases 1-6
- Update CHANGELOG.md with warning reduction initiative details
- Update project files to enable nullable reference types and stricter analysis
- Fix nullable reference type warnings across test projects and main library
- Update API surface tests to reflect nullable annotation changes
- Add AnalyzerReleases tracking files for source generator diagnostics
- Update diagnostic descriptors to document all analyzer rules
- Restructure code to eliminate reflection-based warnings in main library
- Add proper nullable annotations to generated code and examples
- Suppress AOT/trimming warnings in test projects where appropriate
- This systematic approach prioritizes fixing root causes over blanket suppressions
* Feature/documentation validation and updates (#80)
* docs(documentation-overhaul): Establish comprehensive documentation standards and guidelines
- Add design specification for documentation overhaul initiative with layered architecture approach
- Add requirements document defining scope, success criteria, and deliverables for documentation improvements
- Add task breakdown and implementation roadmap for documentation overhaul phases
- Add steering document establishing API style priority (Lambda > Format String > Manual) and documentation standards
- Update all unit and integration tests with improved code comments and documentation clarity
- Update geospatial module (H3, S2) with enhanced inline documentation and architectural comments
- Update source generator tests with clarified test purposes and expected behaviors
- Update README.md with organization attribution and improved project overview
- Update THIRD-PARTY-NOTICES.md with comprehensive attribution for S2 and H3 geospatial libraries
- Update docs/README.md with navigation structure and documentation hub organization
- Establish documentation standards for code examples, method verification, and attribution requirements
- Improve code comment quality across test suites and core modules for maintainability
* docs(documentation-overhaul): Complete comprehensive documentation updates and accuracy improvements
- Create internal architecture documentation covering IDynamoDbEntity interface, source generation, and request builder integration
- Add new API reference documentation with organized method listings by operation category
- Update core feature guides with API style ordering (lambda expressions, format strings, manual approaches)
- Verify and audit all code examples across getting-started, core-features, and advanced-topics sections
- Restore Keys.Pk()/Keys.Sk() usage patterns and document key builder functionality with prefix formatting
- Document entity accessors on generated tables and their type-safe benefits
- Add lambda expression SET operation examples (Add, Remove, Delete, IfNotExists, ListAppend)
- Document manual field name usage with compile-time validation trade-offs
- Update documentation index and navigation with new pages
- Update CHANGELOG.md with all documentation improvements
- Mark all documentation overhaul tasks as complete in task tracking
* Feature/example projects (#81)
* feat(examples): Add comprehensive example applications demonstrating library capabilities
- Add Examples.Shared project with DynamoDbSetup and ConsoleHelpers utilities for shared infrastructure
- Add TodoList example application demonstrating basic CRUD operations with single-entity design
- Add InvoiceManager example application showcasing single-table multi-entity design patterns
- Add TransactionDemo example application comparing transaction approaches and atomicity guarantees
- Add StoreLocator example application demonstrating geospatial queries with GeoHash, S2, and H3 encoding
- Add Examples.Tests project with property-based tests for all example applications
- Update CHANGELOG.md and QUICK_REFERENCE.md documentation
- Add comprehensive design and requirements specifications in .kiro/specs for example applications and storelocator-adaptive-precision
- Reorganize solution structure with examples folder containing all example projects
- Remove legacy BasicUsage example and replace with new structured examples
- All examples configured to use DynamoDB Local and direct project references to latest source code
* feat(storelocator): Fix GeoHash queries and add GSI validation
- Replace incorrect SpatialQueryAsync with lambda-based Query using WithinDistanceKilometers for GeoHash searches
- Add post-filtering by exact distance to handle rectangular approximation from BETWEEN queries
- Implement GSI validation in Program.cs to detect missing Global Secondary Indexes at startup
- Add table recreation capability to recreate tables with correct index definitions
- Update StoreGeoHashTable.FindStoresNearbyAsync to use proper query approach for GeoHash precision 7 index
- Add design specification documenting GeoHash query fix and GSI validation architecture
- Update project dependencies and build configuration across all packages
- Enhance ConsoleHelpers with improved output formatting for warnings and validation messages
- Add comprehensive requirements and task documentation for storelocator query fixes
This fixes the issue where GeoHash queries were incorrectly using SpatialQueryAsync (designed for S2/H3 cell hierarchies) instead of the proper lambda expression approach that translates to DynamoDB BETWEEN queries.
* docs(api-corrections): Correct outdated API patterns and add documentation changelog (#82)
- Add design specification for systematic documentation API corrections initiative
- Add requirements document for documentation validation and updates
- Add tasks document outlining correction workflow and tracking
- Create docs/DOCUMENTATION_CHANGELOG.md to track documentation changes separately from main CHANGELOG
- Update .kiro/steering/documentation.md to include changelog maintenance requirements
- Correct ExecuteAsync() method references to proper API methods (GetItemAsync, PutAsync, UpdateAsync, DeleteAsync, ToListAsync) across all documentation files
- Update return value access patterns in code examples to use correct APIs (ToDynamoDbResponseAsync or DynamoDbOperationContext)
- Add AsyncLocal caveats to documentation where context-based patterns are used
- Update XML documentation comments in request builders to reflect current API
- Correct code examples in core features, advanced topics, getting started, and reference sections
- Add documentation changelog entries to track all corrections made
- Update main CHANGELOG.md with documentation correction initiative entry
This systematic approach ensures all outdated API patterns are identified and corrected while maintaining a separate changelog for documentation changes to facilitate synchronization with derived documentation maintained by other teams.
* Feature/sample operations (#83)
* feat(operation-samples): Add comprehensive DynamoDB operation samples showcase
- Add OperationSamples project with compilable code examples demonstrating FluentDynamoDb API usage
- Create Order and OrderLine domain models with single-table design pattern
- Implement sample files for all DynamoDB operations: Get, Put, Update, Delete, Query, Scan, BatchGet, BatchWrite, TransactionGet, TransactionWrite
- Each operation sample includes four implementation patterns: Raw AWS SDK, FluentDynamoDb manual builder, formatted strings, and lambda expressions
- Add design specification and requirements documentation for the operation samples showcase
- Provide side-by-side comparisons showing verbosity reduction and API improvements over raw AWS SDK
- Enable use of samples for screenshots and video presentations demonstrating FluentDynamoDb capabilities
* feat(operation-samples): Refine samples for full equivalency with domain model conversions
- Update RawSdk methods to manually convert AWS SDK responses to domain models
- Add manual conversion from AttributeValue dictionaries in BatchGetSamples
- Implement ReturnValues in DeleteSamples to return deleted Order entity
- Add manual conversion from AttributeValue dictionaries in GetSamples
- Implement ReturnValues in PutSamples to return created Order entity
- Add manual conversion from AttributeValue dictionaries in QuerySamples
- Add manual conversion from AttributeValue dictionaries in ScanSamples
- Implement ReturnValues in TransactionGetSamples for domain model returns
- Implement ReturnValues in TransactionWriteSamples for domain model returns
- Create OrderUpdateModel class for lambda expression Set() operations
- Update FluentLambdaUpdateAsync to use Set(x => new OrderUpdateModel { ... }) syntax
- Update FluentLambdaTransactionWriteAsync to use proper lambda expressions with conditions
- Verify express-route methods are used in FluentLambda samples
- Mark task 7 and all subtasks as complete in operation-samples-showcase specification
- Ensures full equivalency between RawSdk and Fluent approaches for demonstration purposes
* feat(lambda-expression-api-gaps): Add lambda expression support and scan opt-in pattern (#84)
- Add lambda expression `Where()` overloads for `PutItemRequestBuilder<TEntity>` and `DeleteItemRequestBuilder<TEntity>` to enable type-safe condition expressions
- Implement `GenerateAccessorScanMethods` in source generator to create `Scan()` methods for entity accessors
- Introduce `[Scannable]` attribute requirement for Scan operations to prevent accidental expensive table scans
- Remove generic `Scan<TEntity>()` method from `DynamoDbTableBase` and enforce opt-in pattern via attribute
- Add comprehensive unit tests for lambda expression API gaps in `LambdaExpressionApiGapsPropertyTests.cs`
- Update integration tests to use `[Scannable]` attribute on entities that support scanning
- Add design specification and requirements documentation for lambda expression API gaps feature
- Update CHANGELOG.md and DOCUMENTATION_CHANGELOG.md with new features and breaking changes
- Ensure condition expressions use `ExpressionValidationMode.None` to allow referencing any property, not just keys
* feat(example-entity-cleanup): Clean up entity definitions and documentation (#85)
- Remove redundant [DynamoDbEntity] attributes from table entities (only needed for nested types)
- Remove IDynamoDbEntity interface implementations auto-generated by source generator
- Remove duplicate CreatePk() and CreateSk() methods that conflict with source-generated Keys
- Add Prefix configuration to [PartitionKey] and [SortKey] attributes for key formatting
- Update OperationSamples Order and OrderLine entities with proper key prefixes
- Update InvoiceManager Customer, Invoice, and InvoiceLine entities
- Update StoreLocator GeoHash, H3, and S2 entities
- Update TransactionDemo Account and TransactionRecord entities
- Update TodoList TodoItem entity
- Update documentation examples in ProjectionModels, FieldLevelSecurity, and DOCUMENTATION_CHANGELOG
- Add design specification and requirements for entity cleanup initiative
- Add entity patterns steering document for future reference
- Refactor entities to rely on source-generated implementations instead of manual code
* feat(nuget-package-polish): Add comprehensive NuGet package polish across all packages (#86)
- Add design specification, requirements, and task documentation for NuGet package polish initiative
- Create missing README.md files for Oproto.FluentDynamoDb, Logging.Extensions, NewtonsoftJson, and SystemTextJson packages
- Update existing README files for consistency and quality across all packages
- Add shared package icon (128x128 PNG) in docs/assets directory
- Configure all package .csproj files to reference shared icon and include README files in NuGet packages
- Update Directory.Build.props with common package metadata (Authors, Copyright, URLs)
- Add FluentDynamoDB logo SVG asset for documentation
- Update root README.md with comprehensive project overview and package descriptions
- Ensure consistent package descriptions and metadata across all 10 packages
- Standardize README structure with installation, usage, features, and links sections
* Feature/json refactor (#87)
* feat(nuget-package-polish): Add comprehensive NuGet package polish across all packages
- Add design specification, requirements, and task documentation for NuGet package polish initiative
- Create missing README.md files for Oproto.FluentDynamoDb, Logging.Extensions, NewtonsoftJson, and SystemTextJson packages
- Update existing README files for consistency and quality across all packages
- Add shared package icon (128x128 PNG) in docs/assets directory
- Configure all package .csproj files to reference shared icon and include README files in NuGet packages
- Update Directory.Build.props with common package metadata (Authors, Copyright, URLs)
- Add FluentDynamoDB logo SVG asset for documentation
- Update root README.md with comprehensive project overview and package descriptions
- Ensure consistent package descriptions and metadata across all 10 packages
- Standardize README structure with installation, usage, features, and links sections
* feat(json-serializer-refactor): Refactor JSON serialization to runtime configuration
- Add IJsonBlobSerializer interface for pluggable JSON serialization in core library
- Create SystemTextJsonBlobSerializer and SystemTextJsonOptionsExtensions for System.Text.Json support
- Create NewtonsoftJsonBlobSerializer and NewtonsoftJsonOptionsExtensions for Newtonsoft.Json support
- Remove compile-time DynamoDbJsonSerializerAttribute and JsonSerializerType enum
- Update FluentDynamoDbOptions to accept IJsonBlobSerializer configuration
- Refactor source generator to detect and use runtime serializer configuration
- Update JsonSerializerContextGenerator to work with runtime configuration
- Add comprehensive integration tests for JsonBlob advanced type handling
- Update all unit tests to use new runtime serializer configuration
- Add design specification and requirements documentation for refactor initiative
- Update CHANGELOG and documentation with new serializer configuration patterns
- Enable flexible JSON serializer selection at runtime instead of compile-time attributes
* feat(options-propagation-fixes): Fix options propagation in batch/transaction responses and documentation
- Add options propagation to BatchGetResponse, BatchGetBuilder, TransactionGetResponse, and TransactionGetBuilder to ensure serializer configuration is available during hydration
- Update IAsyncEntityHydrator interface to accept FluentDynamoDbOptions parameter for consistent options handling
- Fix HydratorGenerator to pass options through generated hydration code
- Correct API usage patterns in documentation: replace `.ExecuteAsync()` with `.PutAsync()` and `.ToListAsync()` for Put and Query operations
- Update README files in Oproto.FluentDynamoDb.NewtonsoftJson and Oproto.FluentDynamoDb.SystemTextJson packages with corrected API examples
- Add comprehensive design specification for options propagation architecture in `.kiro/specs/options-propagation-fixes/`
- Update integration test build fixes specification with corrected API patterns
- Update CHANGELOG.md and DOCUMENTATION_CHANGELOG.md with changes and corrections
- Update GenerateAccessorsAttribute documentation and advanced topics guides with correct API usage
- Fixes issue where [JsonBlob] properties would fail during batch/transaction response hydration due to missing serializer configuration
* Feature/merge main into dev (#88)
* Feature/cicd pipeline (#6)
* ci(workflows): Enhance CI/CD pipeline configuration and build processes
- Add comprehensive build workflow with multi-platform support
- Update integration tests workflow to improve test execution
- Expand .gitignore with additional test and artifact exclusions
- Add CICD pipeline setup specification documents
- Remove legacy debug and test generator projects
- Configure GitHub Actions for consistent build and test environments
- Implement caching for NuGet packages to improve build performance
- Standardize build and test commands across workflows
Resolves project infrastructure and CI/CD configuration improvements to streamline development and testing processes.
* docs(github): Add comprehensive branch protection and workflow documentation
- Add detailed branch protection setup and quick reference markdown files
- Create CONTRIBUTING.md to outline project contribution guidelines
- Update README.md with new documentation references
- Add GitHub workflow configurations for CI/CD processes
- Remove outdated integration-tests workflow
- Add new PR validation, release, and test workflows
- Configure Dependabot for automated dependency management
- Enhance project documentation and setup instructions
Rationale: Improve project onboarding, contribution guidelines, and CI/CD infrastructure with clear, comprehensive documentation and workflow configurations.
* chore(deps): Bump actions/setup-java from 4 to 5 (#7)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/github-script from 7 to 8 (#8)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/download-artifact from 4 to 6 (#9)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v6)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/upload-artifact from 4 to 5 (#10)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/setup-dotnet from 4 to 5 (#11)
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/setup-dotnet
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): Bump actions/checkout from 4 to 5 (#38)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* docs: Remove redundant GitHub workflows documentation
- Delete .github/README.md as workflow documentation is now consolidated
- Reduce documentation duplication across the repository
- Simplify CI/CD documentation structure for better maintainability
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.