All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

v0.5.0 (2026-02-17)

Features

  • Implement :limit capability with DynamoDB Limit parameter support
  • Breaking change: Queries and scans without a limit now paginates beyond the 1MB boundary instead of silently returning partial results. For queries this is expected behavior since results are scoped to a single partition key. For scans, this may increase read capacity consumption significantly on large tables. Use Ash.Query.limit/2 to control result size, and consider enabling config :ash_dynamo, warn_on_scan?: true to log warnings when a full table scan is performed.

Documentation

  • Add "Runtime Filtering and Pagination" topic explaining the layered filtering strategy and limit + runtime filter edge case
  • Move :offset to "Not Supported" (DynamoDB has no native offset mechanism)
  • Add begins_with and between to "Not Implemented" with notes on feasibility

Chores

  • Add capture_all_dynamo_requests test helper for asserting multi-page pagination requests
  • Add complex query integration tests (KeyCondition + FilterExpression + Sort + Limit combinations)

v0.4.1 (2026-02-14)

Documentation

  • Add global_secondary_index DSL reference to documentation
  • Add GSI example to getting started guide
  • Add @type t to SecondaryIndex to fix mix docs warnings
  • Remove misleading projection comment from SecondaryIndex moduledoc

Chores

  • Upgrade ash dependency

v0.4.0 (2026-02-14)

Features

  • Add GSI DSL entity with global_secondary_index declaration in dynamodb section
  • Implement automatic GSI index selection for query routing (table PK > GSI PK > Scan)
  • Add opt-in scan operation warning via config :ash_dynamo, warn_on_scan?: true

Chores

  • Add telemetry-based request body capture helper for test assertions
  • Bump dependencies

v0.3.0 (2026-01-15)

Features

  • Implement :sort capability for sort key ordering via ScanIndexForward
  • Add runtime sort fallback using Ash.Actions.Sort.runtime_sort for:
    • Scan mode (no partition key filter)
    • Non-sort-key fields in Query mode
    • Multiple sort fields

v0.2.1 (2025-12-11)

Chores

  • Add test setup with DynamoDB Local
  • Improve documentation
  • Add credo
  • Add CI workflow
  • Prepare to publish release

v0.2.0 (2025-12-10)

Features

  • Implement :create action with PutItem and uniqueness check (no upsert)
  • Implement :update action with UpdateItem and existence check
  • Implement :destroy action with DeleteItem and existence check
  • Add :select support via ProjectionExpression
  • Implement KeyConditionExpression for partition key and sort key operators (=, <, <=, >, >=)
  • Implement FilterExpression for non-key attribute filtering (=, <>, <, <=, >, >=, contains)
  • Add runtime filter fallback for or conditions

Documentation

  • Add supported features roadmap to README
  • Add note about pagination limitation (1MB per request)

v0.1.0 (2025-11-29)

Features

  • Introduce the AshDynamo.DataLayer with a dynamodb DSL section for table, partition key, sort key, and index configuration.
  • Add introspection helpers in AshDynamo.DataLayer.Info for accessing DynamoDB configuration on Ash resources.
  • Provide a basic read implementation that scans the configured table via ExAws and decodes rows into Ash resources.