ores.dq.core
Table of Contents
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_dqschema. - 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
- ores.dq — component group overview.
- ores.dq.api — protocol types and domain entities.
- ores.dq.service — NATS service entrypoint.
- ores.dq Messaging Reference — full NATS subject and message catalogue.
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)
