Skip to content

Commit 28f4add

Browse files
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>
2 parents 5a0e6a3 + a91c409 commit 28f4add

File tree

1 file changed

+0
-124
lines changed

1 file changed

+0
-124
lines changed

.github/README.md

Lines changed: 0 additions & 124 deletions
This file was deleted.

0 commit comments

Comments
 (0)