• v0.13.0 52449e4159

    u.schuster released this 2026-05-06 20:52:02 +02:00 | 3 commits to main since this release

    Adds a decorator that sits below TemporalRepository and redacts
    configured fields whenever it sees a save with valid_until != SENTINEL
    (i.e., a historical row being closed by the temporal close-then-update
    flow). The live row keeps its values intact.

    Per Option B from the issue thread: by default the user-repo factory
    redacts both passwordHash and tlsCertDn. Empty redaction list passes
    everything through unchanged, so non-user temporal stacks compose the
    decorator without surprise behaviour.

    Files:

    • repo/RedactedFieldRepository.hpp — new decorator. Schema contribution
      is empty (purely a save-time transform). Field-name matching uses
      oatpp's reflective property dispatcher and matches against the C++
      identifier name (first DTO_FIELD argument).
    • repo/ConcreteUserRepository.hpp — makeUserRepository now wraps the
      concrete repo in RedactedFieldRepository{"passwordHash",
      "tlsCertDn"} before passing to TemporalRepository. Optional second
      argument lets consumers override the redaction list.
    • test/test_redacted_field_repository.cpp — five tests cover live-row
      pass-through, historical-row redaction (both fields), partial
      redaction list, empty list, and null-valid_until treated as live.
    • README.md — adds RedactedFieldRepository to the header inventory.

    14 of 14 tests pass. Bumped 0.12.0 → 0.13.0.

    Closes #15

    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

    Downloads