Skip to content

feat(orm): add explicit partial repository updates #496

Description

@GaspardKirira

Summary

Allow selected entity fields to be updated without requiring a complete Mapper<T>::toUpdateFields() result.

Current behavior

updateById() always updates every field returned by toUpdateFields().

HTTP PATCH-style operations require manual SQL or a custom repository method.

Expected behavior

Repositories must support an explicit field list for partial updates while preserving mapper-based full updates.

Scope

  • Add a partial update operation.
  • Accept validated FieldValues.
  • Reject empty updates.
  • Validate field identifiers.
  • Bind every value safely.
  • Support configurable primary-key columns.
  • Support a transaction-bound repository.
  • Add SQLite integration tests.
  • Preserve updateById().

Suggested files

  • modules/orm/include/vix/orm/Repository.hpp
  • modules/orm/tests/repository_partial_update_test.cpp

Acceptance criteria

  • One field can be updated.
  • Multiple fields can be updated.
  • Unspecified columns remain unchanged.
  • Empty field lists fail clearly.
  • Invalid identifiers are rejected.
  • Values are bound through prepared statements.
  • Existing full-update behavior remains unchanged.

Non-goals

This issue does not include:

  • JSON Patch parsing;
  • automatic dirty tracking;
  • relationship updates;
  • schema validation.

Suggested labels

  • scope:orm
  • type:feature
  • tests
  • good first issue
  • status:accepted

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions