ores.dq.core

Table of Contents

1. Diagram

ores.dq.core component diagram

Figure 1: ores.dq.core

2. Summary

ores.dq.core is the data-quality infrastructure library for ORE Studio. It provides the badge system (severity-tagged check results attached to datasets and artefacts), dataset and dataset-bundle management, change-management tracking, coding-scheme definitions, and the FSM / ORM base classes reused by all other domain components. Business logic is exposed as NATS message handlers; no other component in the system can own FSM transitions or ORM persistence without depending on ores.dq.

3. Inputs

  • NATS request messages from UI clients and peer services (badge queries, dataset/bundle CRUD, change-management events).
  • PostgreSQL connections to ores_dq_* tables.
  • Domain-specific events from trading, refdata, assets, and other components that trigger DQ population handlers.

4. Outputs

  • Badge and dataset records persisted to the ores_dq schema.
  • NATS response messages for all DQ operations.
  • ORM base classes, entity mappers, and FSM utilities consumed by ores.trading.core, ores.refdata.core, ores.assets.core, etc.

5. Entry points

  • include/ores.dq.core/ores.dq.core.hpp — aggregate include.
  • include/ores.dq.core/messaging/registrar.hpp — registers all NATS handlers with the service host.
  • include/ores.dq.core/service/badge_definition_service.hpp — badge definitions, mappings and severities.
  • include/ores.dq.core/service/dataset_service.hpp — dataset lifecycle.

6. Dependencies

  • ores.dq.api — shared domain types and NATS protocol schemas.
  • ores.iam.core — identity and authorisation context.
  • ores.database — PostgreSQL access on libpq: the query builder, the unit of work and the context.
  • 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. CMake

The generated registrars push this library past MSVC's default object section limit, so the Windows build needs /bigobj.

if(MSVC)
    target_compile_options(${lib_target_name} PUBLIC /bigobj)
endif()

10. Test dependencies

The suites link what the profile cannot know about.

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

Emacs 29.3 (Org mode 9.6.15)