Summary
Phase 2 of the ecosystem-wide directory structure standardization. database_system currently lacks a public-header directory entirely — every .h file lives in database/ mixed with .cpp files. Introduce include/kcenon/database/, separate public headers from implementation, and split the single 600+-test unit_tests.cpp into per-module test files.
Part of kcenon/common_system#657 (master EPIC).
Why
- Largest structural deviation in the ecosystem — no other system mixes public headers with implementation
- Install rules currently require special-case copying from
database/ tree; every consumer faces non-standard #include paths
- Single
unit_tests.cpp defeats parallel test compilation and forces full rebuild on any change
Scope
- Create
include/kcenon/database/ with feature subdirectories (core, backends, query, orm, security, storage, async, monitoring, protocol)
- Move all public
.h files from database/ into include/kcenon/database/
- Rename
database/ → src/; keep only .cpp files plus private headers
- Update all
#include paths across the repo plus downstream consumers (pacs)
- Split
tests/unit_tests.cpp into ~10-15 per-module test files
- Decompose 596-line CMakeLists.txt into
cmake/*.cmake modules per the canonical template
- Add forwarding headers in old paths with
[[deprecated]] for one release
Child Issues
Acceptance Criteria
Summary
Phase 2 of the ecosystem-wide directory structure standardization. database_system currently lacks a public-header directory entirely — every
.hfile lives indatabase/mixed with.cppfiles. Introduceinclude/kcenon/database/, separate public headers from implementation, and split the single 600+-testunit_tests.cppinto per-module test files.Part of kcenon/common_system#657 (master EPIC).
Why
database/tree; every consumer faces non-standard#includepathsunit_tests.cppdefeats parallel test compilation and forces full rebuild on any changeScope
include/kcenon/database/with feature subdirectories (core, backends, query, orm, security, storage, async, monitoring, protocol).hfiles fromdatabase/intoinclude/kcenon/database/database/→src/; keep only.cppfiles plus private headers#includepaths across the repo plus downstream consumers (pacs)tests/unit_tests.cppinto ~10-15 per-module test filescmake/*.cmakemodules per the canonical template[[deprecated]]for one releaseChild Issues
Acceptance Criteria
include/kcenon/database/.hfiles remain insrc/(private headers explicitly marked or moved)tests/contains per-module test files; CTest reports tests grouped by modulecmake/*.cmakemodules match the canonical template