Commit 28f4add
Develop (#90)
* 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>1 file changed
+0
-124
lines changedThis file was deleted.
0 commit comments