Summary
Add insert-or-update support with backend-specific SQL generation.
Upsert behavior must remain explicit because SQLite, MySQL, and PostgreSQL use different syntax.
Current behavior
Repositories expose separate create and update operations.
Applications must manually detect conflicts or write backend-specific SQL.
Expected behavior
The ORM must expose a portable upsert request and delegate SQL generation to a dialect-aware implementation.
Conflict targets must be explicit.
Scope
Suggested files
modules/orm/include/vix/orm/Upsert.hpp
modules/orm/include/vix/orm/Repository.hpp
modules/orm/src/...
modules/orm/tests/repository_upsert_test.cpp
Acceptance criteria
Non-goals
This issue does not include:
- automatic conflict-column discovery;
- merge of relationships;
- bulk upsert;
- retrying transaction conflicts.
Suggested labels
scope:orm
type:feature
tests
help wanted
status:accepted
Summary
Add insert-or-update support with backend-specific SQL generation.
Upsert behavior must remain explicit because SQLite, MySQL, and PostgreSQL use different syntax.
Current behavior
Repositories expose separate create and update operations.
Applications must manually detect conflicts or write backend-specific SQL.
Expected behavior
The ORM must expose a portable upsert request and delegate SQL generation to a dialect-aware implementation.
Conflict targets must be explicit.
Scope
Suggested files
modules/orm/include/vix/orm/Upsert.hppmodules/orm/include/vix/orm/Repository.hppmodules/orm/src/...modules/orm/tests/repository_upsert_test.cppAcceptance criteria
Non-goals
This issue does not include:
Suggested labels
scope:ormtype:featuretestshelp wantedstatus:accepted