Skip to content

refactor(query_builder): consolidate query builders with Strategy pattern#311

Merged
kcenon merged 2 commits into
mainfrom
refactor/310-consolidate-query-builders-strategy-pattern
Jan 2, 2026
Merged

refactor(query_builder): consolidate query builders with Strategy pattern#311
kcenon merged 2 commits into
mainfrom
refactor/310-consolidate-query-builders-strategy-pattern

Conversation

@kcenon

@kcenon kcenon commented Jan 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • Implement Strategy pattern to consolidate 4 separate query builder classes into unified design
  • Add query_dialect interface with sql_dialect, mongodb_dialect, redis_dialect implementations
  • Refactor query_builder to use single dialect instead of 3 separate builders
  • Reduce memory footprint by ~66% (1 allocation vs 3 previously)
  • Maintain backward compatibility with legacy APIs marked as deprecated

Changes

New Files

  • database/query_dialect.h - Strategy interface and dialect implementations
  • database/query_dialect.cpp - Implementation of dialect strategies

Modified Files

  • database/query_builder.h - Extended API, deprecated individual builders
  • database/query_builder.cpp - Refactored to use single dialect
  • database/CMakeLists.txt - Added new source files
  • docs/CHANGELOG.md - Documented changes
  • docs/API_REFERENCE.md - Updated API documentation

Test plan

  • All existing unit tests pass (134 tests total)
  • universal_query_builder_test: 21 tests PASSED
  • sql_query_builder_test: 41 tests PASSED
  • mongodb_query_builder_test: 35 tests PASSED
  • redis_query_builder_test: 37 tests PASSED
  • Build succeeds with deprecation warnings (expected)

Acceptance Criteria

  • Single query_builder class as primary API
  • Only 1 dialect allocated (vs 3 builders before)
  • No breaking changes to public API
  • All existing tests pass
  • Memory footprint reduced by ~66%
  • Individual builders marked deprecated

Closes #310

kcenon added 2 commits January 2, 2026 13:29
…tern

Implement Strategy pattern to unify 4 separate query builder classes
into a single query_builder with interchangeable dialect strategies.

Changes:
- Add query_dialect interface with sql_dialect, mongodb_dialect, redis_dialect
- Refactor query_builder to use single dialect instead of 3 builders
- Add [[deprecated]] attributes to sql_query_builder, mongodb_query_builder,
  and redis_query_builder classes
- Reduce memory footprint by ~66% (1 allocation vs 3)
- Maintain backward compatibility with legacy update(data) and insert(data) APIs

Closes #310
- Add query_builder Strategy pattern changes to CHANGELOG
- Update query_builder API documentation with new methods
- Mark sql_query_builder, mongodb_query_builder, redis_query_builder as deprecated
- Document memory efficiency improvements (~66% reduction)

Related: #310
@github-actions

github-actions Bot commented Jan 2, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

No comparison reports available. Baseline may not be established yet.

@kcenon kcenon merged commit 46d23cd into main Jan 2, 2026
26 checks passed
@kcenon kcenon deleted the refactor/310-consolidate-query-builders-strategy-pattern branch January 2, 2026 04:44
kcenon added a commit that referenced this pull request Apr 13, 2026
…tern (#311)

* refactor(query_builder): consolidate query builders with Strategy pattern

Implement Strategy pattern to unify 4 separate query builder classes
into a single query_builder with interchangeable dialect strategies.

Changes:
- Add query_dialect interface with sql_dialect, mongodb_dialect, redis_dialect
- Refactor query_builder to use single dialect instead of 3 builders
- Add [[deprecated]] attributes to sql_query_builder, mongodb_query_builder,
  and redis_query_builder classes
- Reduce memory footprint by ~66% (1 allocation vs 3)
- Maintain backward compatibility with legacy update(data) and insert(data) APIs

Closes #310

* docs: update API reference and changelog for Strategy pattern refactor

- Add query_builder Strategy pattern changes to CHANGELOG
- Update query_builder API documentation with new methods
- Mark sql_query_builder, mongodb_query_builder, redis_query_builder as deprecated
- Document memory efficiency improvements (~66% reduction)

Related: #310
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] Consolidate query builders with Strategy pattern - Kent Beck Simple Design

1 participant