Add cppbessot.md file

This commit is contained in:
2026-02-28 04:14:31 -04:00
parent 13da012766
commit c82a7e926f

View File

@@ -28,7 +28,7 @@ The following summary is designed to be pasted into **Cursor's** composer or cha
```text ```text
${CPPBESSOT_WORKDIR}/ ${CPPBESSOT_WORKDIR}/
├── v<N>/ # Immutable version snapshots ├── v<N>/ # Immutable version snapshots
│ ├── openapi/ # Source YAMLs + Mustache templates │ ├── openapi/ # Source YAMLs
│ ├── generated-ts-types/ # Output: TS interfaces │ ├── generated-ts-types/ # Output: TS interfaces
│ ├── generated-zod/ # Output: Zod TS schemas │ ├── generated-zod/ # Output: Zod TS schemas
│ ├── generated-cpp-source/ # Output: C++ Headers (with ODB & JSON macros) │ ├── generated-cpp-source/ # Output: C++ Headers (with ODB & JSON macros)
@@ -104,7 +104,7 @@ All CMake files are located in the submodule directory. The entry point is `CppB
- Use `UpperCamelCase` for class/schema names. - Use `UpperCamelCase` for class/schema names.
- Do not use underscores in class names or property names. - Do not use underscores in class names or property names.
7. **No Version in C++ Namespace**: Generated C++ model namespaces must not encode schema version names. The wider project should not need version-coupled source code identifiers; schema version selection should be done via include path selection (for example, `include_directories` pointing at the desired generated version). 7. **No Version in C++ Namespace**: Generated C++ model namespaces must not encode schema version names. The wider project should not need version-coupled source code identifiers; schema version selection should be done via include path selection (for example, `include_directories` pointing at the desired generated version).
8. **Template Bootstrap Input**: Use the current checked-in Mustache templates under `${CPPBESSOT_WORKDIR}/v<N>/openapi/templates/` as initial test inputs when bringing up generation and CMake flows. Treat these templates as the baseline that should work first before further refactoring. 8. **Template Bootstrap Input**: Use the current checked-in Mustache templates under `${CPPBESSOT_MODULE_ROOT}/openapi/templates/` as initial test inputs when bringing up generation and CMake flows. Treat these templates as the baseline that should work first before further refactoring.
### Minimum annotations for ODB migration diffing ### Minimum annotations for ODB migration diffing
@@ -147,7 +147,7 @@ Run all commands from the project repository root. Prerequisites: `npx`, `odb` c
```bash ```bash
# 1. C++ model headers (models-only: no CMake/ModelBase; nlohmann makes headers self-contained) # 1. C++ model headers (models-only: no CMake/ModelBase; nlohmann makes headers self-contained)
npx @openapitools/openapi-generator-cli generate -i db/v1.1/openapi/openapi.yaml -g cpp-restsdk -t db/v1.1/openapi/templates/cpp-odb-json -c db/v1.1/openapi/templates/cpp-odb-json/config.yaml -o db/v1.1/generated-cpp-source --global-property models npx @openapitools/openapi-generator-cli generate -i db/v1.1/openapi/openapi.yaml -g cpp-restsdk -t openapi/templates/cpp-odb-json -c openapi/templates/cpp-odb-json/config.yaml -o db/v1.1/generated-cpp-source --global-property models
# 2. Create ODB and DDL output dirs # 2. Create ODB and DDL output dirs
mkdir -p db/v1.1/generated-odb-source/sqlite db/v1.1/generated-odb-source/postgre \ mkdir -p db/v1.1/generated-odb-source/sqlite db/v1.1/generated-odb-source/postgre \
@@ -156,27 +156,27 @@ mkdir -p db/v1.1/generated-odb-source/sqlite db/v1.1/generated-odb-source/postgr
# 3. ODB ORM (changelog goes to generated-odb-source/<backend>) # 3. ODB ORM (changelog goes to generated-odb-source/<backend>)
odb -I db/v1.1/generated-cpp-source/include --std c++11 -d sqlite -q \ odb -I db/v1.1/generated-cpp-source/include --std c++11 -d sqlite -q \
-o db/v1.1/generated-odb-source/sqlite --changelog-dir db/v1.1/generated-odb-source/sqlite \ -o db/v1.1/generated-odb-source/sqlite --changelog-dir db/v1.1/generated-odb-source/sqlite \
db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/Agent.h db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/DeliveryRequest.h db/v1.1/generated-cpp-source/include/*/model/Agent.h db/v1.1/generated-cpp-source/include/*/model/DeliveryRequest.h
odb -I db/v1.1/generated-cpp-source/include --std c++11 -d pgsql -q \ odb -I db/v1.1/generated-cpp-source/include --std c++11 -d pgsql -q \
-o db/v1.1/generated-odb-source/postgre --changelog-dir db/v1.1/generated-odb-source/postgre \ -o db/v1.1/generated-odb-source/postgre --changelog-dir db/v1.1/generated-odb-source/postgre \
db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/Agent.h db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/DeliveryRequest.h db/v1.1/generated-cpp-source/include/*/model/Agent.h db/v1.1/generated-cpp-source/include/*/model/DeliveryRequest.h
# 4. SQL DDL # 4. SQL DDL
odb -I db/v1.1/generated-cpp-source/include --std c++11 -d sqlite --generate-schema --schema-format sql -q \ odb -I db/v1.1/generated-cpp-source/include --std c++11 -d sqlite --generate-schema --schema-format sql -q \
-o db/v1.1/generated-sql-ddl/sqlite --changelog-dir db/v1.1/generated-odb-source/sqlite \ -o db/v1.1/generated-sql-ddl/sqlite --changelog-dir db/v1.1/generated-odb-source/sqlite \
db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/Agent.h db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/DeliveryRequest.h db/v1.1/generated-cpp-source/include/*/model/Agent.h db/v1.1/generated-cpp-source/include/*/model/DeliveryRequest.h
odb -I db/v1.1/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \ odb -I db/v1.1/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \
-o db/v1.1/generated-sql-ddl/postgre --changelog-dir db/v1.1/generated-odb-source/postgre \ -o db/v1.1/generated-sql-ddl/postgre --changelog-dir db/v1.1/generated-odb-source/postgre \
db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/Agent.h db/v1.1/generated-cpp-source/include/cppbessot_v1_1/model/DeliveryRequest.h db/v1.1/generated-cpp-source/include/*/model/Agent.h db/v1.1/generated-cpp-source/include/*/model/DeliveryRequest.h
``` ```
### v1.2 — from OpenAPI through SQL DDL ### v1.2 — from OpenAPI through SQL DDL
```bash ```bash
# 1. C++ model headers (models-only) # 1. C++ model headers (models-only)
npx @openapitools/openapi-generator-cli generate -i db/v1.2/openapi/openapi.yaml -g cpp-restsdk -t db/v1.2/openapi/templates/cpp-odb-json -c db/v1.2/openapi/templates/cpp-odb-json/config.yaml -o db/v1.2/generated-cpp-source --global-property models npx @openapitools/openapi-generator-cli generate -i db/v1.2/openapi/openapi.yaml -g cpp-restsdk -t openapi/templates/cpp-odb-json -c openapi/templates/cpp-odb-json/config.yaml -o db/v1.2/generated-cpp-source --global-property models
# 2. Create ODB and DDL output dirs # 2. Create ODB and DDL output dirs
mkdir -p db/v1.2/generated-odb-source/sqlite db/v1.2/generated-odb-source/postgre \ mkdir -p db/v1.2/generated-odb-source/sqlite db/v1.2/generated-odb-source/postgre \
@@ -185,20 +185,20 @@ mkdir -p db/v1.2/generated-odb-source/sqlite db/v1.2/generated-odb-source/postgr
# 3. ODB ORM # 3. ODB ORM
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite -q \
-o db/v1.2/generated-odb-source/sqlite --changelog-dir db/v1.2/generated-odb-source/sqlite \ -o db/v1.2/generated-odb-source/sqlite --changelog-dir db/v1.2/generated-odb-source/sqlite \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/Agent.h db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/DeliveryRequest.h db/v1.2/generated-cpp-source/include/*/model/Agent.h db/v1.2/generated-cpp-source/include/*/model/DeliveryRequest.h
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql -q \
-o db/v1.2/generated-odb-source/postgre --changelog-dir db/v1.2/generated-odb-source/postgre \ -o db/v1.2/generated-odb-source/postgre --changelog-dir db/v1.2/generated-odb-source/postgre \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/Agent.h db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/DeliveryRequest.h db/v1.2/generated-cpp-source/include/*/model/Agent.h db/v1.2/generated-cpp-source/include/*/model/DeliveryRequest.h
# 4. SQL DDL # 4. SQL DDL
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite --generate-schema --schema-format sql -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite --generate-schema --schema-format sql -q \
-o db/v1.2/generated-sql-ddl/sqlite --changelog-dir db/v1.2/generated-odb-source/sqlite \ -o db/v1.2/generated-sql-ddl/sqlite --changelog-dir db/v1.2/generated-odb-source/sqlite \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/Agent.h db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/DeliveryRequest.h db/v1.2/generated-cpp-source/include/*/model/Agent.h db/v1.2/generated-cpp-source/include/*/model/DeliveryRequest.h
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \
-o db/v1.2/generated-sql-ddl/postgre --changelog-dir db/v1.2/generated-odb-source/postgre \ -o db/v1.2/generated-sql-ddl/postgre --changelog-dir db/v1.2/generated-odb-source/postgre \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/Agent.h db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/DeliveryRequest.h db/v1.2/generated-cpp-source/include/*/model/Agent.h db/v1.2/generated-cpp-source/include/*/model/DeliveryRequest.h
``` ```
### Migration v1.1 → v1.2 ### Migration v1.1 → v1.2
@@ -213,26 +213,26 @@ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite --generate-sch
-o db/migrations/v1.1-v1.2/sqlite \ -o db/migrations/v1.1-v1.2/sqlite \
--changelog-in db/v1.1/generated-odb-source/sqlite/Agent.xml \ --changelog-in db/v1.1/generated-odb-source/sqlite/Agent.xml \
--changelog-out db/v1.2/generated-odb-source/sqlite/Agent.xml \ --changelog-out db/v1.2/generated-odb-source/sqlite/Agent.xml \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/Agent.h db/v1.2/generated-cpp-source/include/*/model/Agent.h
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite --generate-schema --schema-format sql -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d sqlite --generate-schema --schema-format sql -q \
-o db/migrations/v1.1-v1.2/sqlite \ -o db/migrations/v1.1-v1.2/sqlite \
--changelog-in db/v1.1/generated-odb-source/sqlite/DeliveryRequest.xml \ --changelog-in db/v1.1/generated-odb-source/sqlite/DeliveryRequest.xml \
--changelog-out db/v1.2/generated-odb-source/sqlite/DeliveryRequest.xml \ --changelog-out db/v1.2/generated-odb-source/sqlite/DeliveryRequest.xml \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/DeliveryRequest.h db/v1.2/generated-cpp-source/include/*/model/DeliveryRequest.h
# PostgreSQL # PostgreSQL
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \
-o db/migrations/v1.1-v1.2/postgre \ -o db/migrations/v1.1-v1.2/postgre \
--changelog-in db/v1.1/generated-odb-source/postgre/Agent.xml \ --changelog-in db/v1.1/generated-odb-source/postgre/Agent.xml \
--changelog-out db/v1.2/generated-odb-source/postgre/Agent.xml \ --changelog-out db/v1.2/generated-odb-source/postgre/Agent.xml \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/Agent.h db/v1.2/generated-cpp-source/include/*/model/Agent.h
odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \ odb -I db/v1.2/generated-cpp-source/include --std c++11 -d pgsql --generate-schema --schema-format sql -q \
-o db/migrations/v1.1-v1.2/postgre \ -o db/migrations/v1.1-v1.2/postgre \
--changelog-in db/v1.1/generated-odb-source/postgre/DeliveryRequest.xml \ --changelog-in db/v1.1/generated-odb-source/postgre/DeliveryRequest.xml \
--changelog-out db/v1.2/generated-odb-source/postgre/DeliveryRequest.xml \ --changelog-out db/v1.2/generated-odb-source/postgre/DeliveryRequest.xml \
db/v1.2/generated-cpp-source/include/cppbessot_v1_2/model/DeliveryRequest.h db/v1.2/generated-cpp-source/include/*/model/DeliveryRequest.h
``` ```
--- ---