ores.variability.core

Table of Contents

1. Diagram

ores.variability.core component diagram

Figure 1: ores.variability.core

2. Summary

ores.variability.core manages system-wide configuration and runtime variability for ORE Studio. It stores feature flags and system settings in the database with bitemporal versioning (so any configuration change can be audited and rolled back), and exposes NATS handlers for querying and updating settings at runtime. Other components depend on this library to drive runtime- configurable behaviour without redeployment.

3. Inputs

  • NATS request messages for setting query/update operations.
  • PostgreSQL connections to the ores_variability_* tables with temporal versioning.

4. Outputs

  • System-setting records persisted to the ores_variability schema with bitemporal history.
  • NATS response messages returned to callers.

5. Entry points

  • include/ores.variability.core/ores.variability.hpp — aggregate include.
  • include/ores.variability.core/messaging/registrar.hpp — registers NATS handlers with the service host.
  • include/ores.variability.core/service/ — setting management services.
  • include/ores.variability.core/repository/ — ORM entities and mappers.

6. Dependencies

  • ores.variability.api — shared domain types and NATS protocol schemas.
  • ores.dq — ORM base classes.
  • soci — SQL ORM for PostgreSQL persistence.
  • nats.c — NATS messaging client.

7. Build dependencies

What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.

8. See also

9. Test dependencies

The suites link what the profile cannot know about.

target_link_libraries(${lib_target_name}
    PUBLIC
        ores.variability.api.lib
        ores.database.lib
        ores.logging.lib
        ores.nats.lib
    PRIVATE
        ores.service.lib
        ores.utility.lib
        ores.security.lib
        ores.dq.api.lib
        ores.history.core.lib
        ores.diff.lib
        ores.eventing.core.lib
        faker-cxx::faker-cxx
        libfort::fort
        Boost::boost)
target_link_libraries(${tests_target_name}
    PRIVATE
        ${lib_target_name}
        ores.telemetry.core.lib
        ores.utility.lib
        ores.logging.lib
        ores.service.lib
        ores.eventing.api.lib
        ores.eventing.core.lib
        ores.refdata.core.lib
        ores.diff.lib
        ores.testing.lib
        ores.openssl_cleanup
        Catch2::Catch2
        faker-cxx::faker-cxx
        Threads::Threads)

Emacs 29.3 (Org mode 9.6.15)